2009-08-11 19 views
5

Tengo que llamar a una función varargs:¿Cómo puedo llamar a una función varargs con una matriz en ActionScript?

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

Sin embargo, estoy construyendo los argumentos para esta dinámica:

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

El problema es que cuando llamo a la función de esta manera args extremos siendo una matriz de 1 elemento con someArgs como primer elemento, no como una matriz de tres elementos.

¿Cómo puedo llamar al doSomething con someArgs como el argumento array?

(Para los motores de búsqueda, este es el argumento de desempaquetar)

+1

Nota: esto se llama "desempaquetado de argumentos". Si busca en google ese término, así como también actionscript, encontrará algunas discusiones sobre el asunto. La sugerencia de Brian de usar .aplicar es correcta IMO. –

+0

Enhorabuena, ya está en el resultado n. ° 3 en google en "desempate del argumento actionscript" :) – Rydell

+0

Buen señor. SO.com realmente debe estar bien, mm? –

Respuesta

9

Uso Function.apply.

De esta manera:

doSomething.apply(null, someArgs); 

Si doSomething es un método de una clase, pasar en la clase en lugar de null.

+1

en realidad, no importa, si pasa la clase/instancia ... AS3 crea automáticamente cierres de métodos, donde "esto" está preasignado para ser siempre el propietario del método ... – back2dos

+0

Terminé encontrando esto sobre diez minutos después de la publicación. Pensé que aún proporcionaría rep a quien respondiera, y es bueno tenerlo en SO.com. –

Cuestiones relacionadas