Передать аргументы из массива в метод Actionscript с аргументом ... (rest) - PullRequest
3 голосов
/ 10 марта 2011

Мой вопрос - это транспонирование Flex этого вопроса:

Можно ли передать массив в качестве аргументов методу с переменными аргументами в 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 ]

10 голосов
/ 10 марта 2011

Это возможно, пройдя сам объект 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 голос
/ 10 марта 2011

Компилятору довольно сложно угадать, что вы хотите, хотите ли вы передать один аргумент типа Array или вы хотите передать элементы этого массива.Компилятор идет в предположении один.

0 голосов
/ 10 марта 2011

Аргументы - это один объект, который ожидает метод. Вы можете передать несколько элементов или (в данном случае) один массив с параметрами.

Пример:

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...