2009-08-11 10 views
5

Ho bisogno di chiamare una funzione varargs:Come posso chiamare una funzione varargs con un array in ActionScript?

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

Tuttavia, sto costruendo gli argomenti di questo in modo dinamico:

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

Il problema è che quando chiamo la funzione in questo modo args estremità come array a 1 elemento con someArgs come primo elemento, non come array a tre elementi.

Come posso chiamare doSomething con someArgs come array di argomenti?

(Per i motori di ricerca, questo è argomento disimballo)

+1

Nota: questo è chiamato "argomento decompressione". Se cerchi google per quel termine e actionscript, troverai alcune discussioni sull'argomento. Il suggerimento di Brian di usare .apply è corretto IMO. –

+0

Congratulazioni, sei già # 3 risultato su google sotto "argomento actionscript disimballaggio" :) – Rydell

+0

Buon signore. SO.com davvero sta andando bene, mm? –

risposta

9

Usa Function.apply.

Così:

doSomething.apply(null, someArgs); 

Se doSomething è un metodo di una classe, passare nella classe invece di null.

+1

in realtà, non importa, se passi nella classe/istanza ... AS3 crea automaticamente chiusure di metodo, dove "questo" è preassegnato per essere sempre il proprietario del metodo ... – back2dos

+0

Ho finito per trovarlo circa dieci minuti dopo la pubblicazione. Ho pensato di fornire ancora un rappresentante a chiunque abbia risposto, ed è bello averlo su SO.com. –

Problemi correlati