在 E4X 里可以使用 {} 来进行变量展开。比如下以下代码:
var foo:String = "123";
trace(<>abc{foo}def</>.toString());// -> abc123def
在 {} 里面可以为在执行期才知道的变量:
var foo:String = Math.random().toSTring();
trace(<>abc{foo}def</>.toString());
在 {} 还可以使用表达式(运算符、调用函数,etc.):
var foo:String = "123";
trace(<>{foo + foo}</>.toString());// -> 123123
//比较复杂一点的
trace(<>{foo += "456", foo+"789"}</>.toString());// -> 123456789
//调用函数
trace(<>{foo.substr(1)}</>.toString());// -> 23
在 {} 里无法使用语句,但可以使用匿名函数来代替:
var foo:String = "123";
trace(<>{(function(a){return a + a})(foo)}</>.toString());// -> 123123
使用 E4X 会减少一些代码,方便书写,但注意 <></> 的类型为 XMLList。
最后给一个方便的函数:
public function e4xstr(e4x:XMLList):String {
return e4x.toString();
}
//用法
var a:int = 3;
var b:int = 5;
trace(e4xstr(<>a+b={a+b}, a*b={a*b}</>)); // -> a+b=8, a*b=15
未完待续,下一篇详解 E4X 的内部实现。
![[Google]](http://www.google.com/logos/Logo_25wht.gif)
![[Synchronous Space]](http://weihe924stephen.googlepages.com/syncspace-banner.jpg)
![[Creative Commons License]](http://i.creativecommons.org/l/by-nc-sa/3.0/88x31.png)
![[Add to Google]](http://buttons.googlesyndication.com/fusion/add.gif)
![[Aggregated by MXNA]](http://weblogs.macromedia.com/mxna/images/mxna88x31.gif)
![[Flex.org]](http://www.flex.org/images/flexorg.gif)
![Validate my Atom 1.0 feed [Valid Atom 1.0]](http://validator.w3.org/feed/images/valid-atom.png)
![Validate my RSS feed [Valid RSS]](http://resource.googlecode.com/files/valid-rss.png)
![[I heart FeedBurner]](http://www.feedburner.com/fb/images/pub/i_heart_fb.gif)
没有评论:
发表评论