2009-08-11 2 views
5

мне нужно вызвать функцию с переменным числом аргументов:Как я могу вызвать функцию varargs с массивом в ActionScript?

function doSomething(... args): Object { 
    // do something with each arg 
} 

Однако я строю аргументы для этого динамически:

var someArgs: Array = ['a', 'b', 'c']; 
doSomething(someArgs); 

Проблема заключается в том, когда я вызываю функцию таким образом args концы up - 1-элементный массив с someArgs как первый элемент, а не трехэлементный массив.

Как я могу позвонить doSomething с помощью someArgs в качестве массива аргументов?

(для поисковых систем, это аргумент распаковка)

+1

Примечание: это называется «распаковка аргументов». Если вы ищете Google для этого термина, а также ActionScript, вы найдете несколько обсуждений по этому вопросу. Предложение Брайана использовать .apply верно ИМО. –

+0

Поздравляем, вы уже # 3 результат в google под "аргумент аргументации распаковывать" :) – Rydell

+0

Хороший лорд. SO.com действительно должно быть хорошо, мм? –

ответ

9

Использование Function.apply.

Как это:

doSomething.apply(null, someArgs); 

Если йоЗотеЬЫпд является методом класса, проходят в классе, а не нулевой.

+1

На самом деле, неважно, проходите ли вы в классе/экземпляре ... AS3 автоматически создает закрытие методов, где «this» предварительно назначается, чтобы быть владельцем метода ... – back2dos

+0

В итоге я нашел это примерно десять минут после публикации. Я полагал, что все равно предоставил репутацию тем, кого ответили, и это приятно иметь на SO.com. –

Смежные вопросы