skip to main |skip to sidebar

2008-06-14

[AS3]E4X的变量展开详解(1)——基础

在 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 的内部实现

没有评论: