Аргумент переменной длины AS3 расширяется для вызова другой функции с аргументами длины переменной - PullRequest
5 голосов
/ 22 декабря 2011

как это сделать

function foo(x:*, ...args):* {
}

function bar(x:*, ...args):* {
   foo(x, args); // how to expand args ? the args is an array now
}

как раскрыть арги?когда я звоню bar(1,2,3), я хочу, чтобы он звонил foo(1,2,3), но он звонил foo(1,[2,3])

Ответы [ 2 ]

4 голосов
/ 22 декабря 2011
function bar(x:*, ...args):* {
   args.unshift( x ); //add x to the front of the args array
   foo.apply( <scope>, args );
}

Если foo и bar объявлены в одном классе, <scope> должно быть this, в противном случае это должен быть экземпляр класса, объявляющего foo, и если foo является глобальной функцией, то это быть null

foo.apply( this, args );
//-- or --
foo.apply( myFooInstance, args );
//-- or --
foo.apply( null, args );
0 голосов
/ 22 декабря 2011

Я считаю, что это частично отвечает на ваш вопрос: http://www.flex888.com/574/can-i-have-a-variable-number-of-arguments-in-as3.html

Однако я не думаю, что возможно сделать именно то, что вы запрашиваете каким-либо разумным способом.

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