使用...(rest)参数将数组中的参数传递给Actionscript方法

时间:2011-03-10 14:16:28

标签: actionscript methods arguments

我的问题是这个问题的Flex转换:

Can I pass an array as arguments to a method with variable arguments in Java?

也就是说,我在一些Actionscript代码中有一个数组,我需要将数组中索引的每个对象传递给方法method(...arguments)

有些代码要说清楚:

private function mainMethod():void{
    var myArray:Array = new Array("1", "2", "3");
    // Call calledMethod and give it "1", "2" and "3" as arguments
}

private function calledMethod(...arguments):void{
    for each (argument:Object in arguments)
        trace(argument);
}

有什么方法可以做评论建议的内容吗?

3 个答案:

答案 0 :(得分:10)

通过执行Function对象本身是可能的。调用apply()就可以了:

private function mainMethod():void
{
    var myArray:Array = new Array("1", "2", "3");

    // call calledMethod() and pass each object in myArray individually
    // and not as an array
    calledMethod.apply( this, myArray );
}

private function calledMethod( ... args ):void
{
    trace( args.length ); // traces 3
}

有关详细信息,请查看http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/Function.html#apply()

答案 1 :(得分:1)

编译器很难猜出你想要什么,你想传递一个Array类型的参数,或者你想传递那个数组的元素。编译器采用假设一。

答案 2 :(得分:0)

... args是等待方法的一个对象。您可以使用参数传递多个元素或(在本例中)一个数组。

示例:

function mainMethod():void
{
    //Passing parameters as one object
    calledMethod([1, 2, 3]);

    //Passing parameters separately
    calledMethod(1, 2, 3);
}

function calledMethod(...args):void
{
    for each (var argument in args)
    {
        trace(argument);
    }
}

mainMethod();

希望它有所帮助, 罗布