itkai.com

E4Xはちょっと行き過ぎではないですか? by ActionScript3

日付: 2007年07月27日 | Author: K.

ActionScriptもバージョン3になりやっと言語らしくなり、またFlexのお仕事も頂いているということで、近頃本気モードでFlexをしているわけですが、正直E4Xは少々生きすぎなのではないかと思えるほど、変態的プログラミングを行える言語になってしまいました。

もともとECMAスクリプトはネィティブ型にはリテラルを用意する方向にあるようですが、正規表現のリテラルに比べるといかれかげんが違いますよね。

当初、

var xml:XML =
  <ul>
    <li>1</li>
    <li>2</li>
  </ul>
;

この程度だろうと適当に想像していたところ、『しっかりランゲージリファレンスに目を通したところ(笑』なんと、{ }演算子で変数を代入~や、+演算子で合成できるとあるじゃーありませんか。

そうなるとこのようなことも出来るんですね。

var text:TextField = new TextField();
text.appendText( rec( ['あ', 'い', 'う', 'え', 'お' ] ) );

public function rec(msg:Array ):XML
{
  if( !msg .length){
    return new XML('おわりだよ');
  }
  return <ul><li>{ msg.shift() }</li><li>{ rec(msg) }</li></ul>;
}

いやはや、これだけでもご飯一膳いけそうです。皆様もAS3で変態的プログラミングライフなどいかがでしょうか。

ちなみに上記の例では、+演算子による合成は使っていないですが、これを使うことでまだ親が確定していない一連の子を、+演算子で合成後appendChildを行うといったことが出来ます。

function getChilds():XML
{
  return <li>{ _1 }</li> + <li>{ _2 }</li> + <li>{ _3 }</li>;
}