在 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 的内部实现。
没有评论:
发表评论