我见过很多关于如何在Flex中检索和传递varargs方法参数的示例。例如,我们希望将a的varargs参数传递给:
private function call_a():void {
a("Hello", "Goodbye");
}
private function a(... args:*):void {
trace("a-args: " + format(args));
b(args);
}
private function b(... args:*):void {
trace("b-args: " + format(args));
}
// output arrays in readable format
private static function format(arg:Object):String {
var s:String = "";
if (arg is Array) {
var tmp:Array = new Array();
for each (var a:Object in arg as Array) {
tmp.push(format(a));
}
s += "[ " + tmp + " ]";
} else {
s += arg.toString();
}
return s;
}
其输出为:
a-args: [ Hello,Goodbye ]
b-args: [ [ Hello,Goodbye ] ]
传递给b的args包装在一个数组中。为了解决这个问题,我们在a的定义中使用apply:
protected function a(... args:*):void {
trace("a-args: " + format(args));
b.apply(null, args);
}
其输出为:
a-args: [ Hello,Goodbye ]
b-args: [ Hello,Goodbye ]
排序。
我的问题是,在将varargs参数传递给构造函数时,我们如何应用上述方法?我不知道如何为构造函数调用apply方法......