Pass arguments from an array to an Actionscript me

2019-02-19 08:33发布

问题:

my question is the Flex transposition of this question :

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

That is, I have an Array in some Actionscript code and i need to pass every object indexed in the array into a method method(...arguments).

Some code to make it clear:

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

Is there some way to do what the comment suggests?

回答1:

It's possible by going through the Function object itself. Calling apply() on it will work:

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
}

For more info, check out http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/Function.html#apply()



回答2:

It is kind of hard for the compiler to guess what you want, do you want to pass one argument of type Array or do you want to pass the elements of that array. The compiler goes for assumption one.



回答3:

The ...args is one Object the method awaits for. You can pass multiple elements or (in this case) one array with the parameters.

Example:

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

Hope it helps, Rob