Flex varargs参数

时间:2012-05-01 16:24:24

标签: actionscript-3 variadic-functions

我见过很多关于如何在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方法......

0 个答案:

没有答案