使用…(rest)参数将参数从数组传递到Actionscript方法

使用…(rest)参数将参数从数组传递到Actionscript方法,actionscript,methods,arguments,Actionscript,Methods,Arguments,我的问题是这个问题的弹性转换: 也就是说,我在一些Actionscript代码中有一个数组,我需要将数组中索引的每个对象传递到一个方法方法(…参数) 下面是一些代码,以明确说明: private function mainMethod():void{ var myArray:Array = new Array("1", "2", "3"); // Call calledMethod and give it "1", "2" and "3" as arguments } pri

我的问题是这个问题的弹性转换:

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

下面是一些代码,以明确说明:

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);
}

有什么方法可以按照注释的建议执行吗?

编译器很难猜出您想要的是什么,是要传递一个数组类型的参数,还是要传递该数组的元素。编译器采用假设一。

通过遍历函数对象本身是可能的。对其调用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
}

有关更多信息,请查看

参数是该方法等待的一个对象。可以通过参数传递多个元素或(在本例中)一个数组

例如:

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();
希望有帮助,
Rob

没有办法回避这个问题吗?对不起,这没用。我的问题专门解决了将数组中包含的对象传递给这种方法的问题。这意味着您无法在方法调用中显式显示这些对象。太棒了!几天前,我自己也遇到了这个问题。