2009-07-03 11 views
1

Dire que j'ai deux fonctions qui attendent ... autres paramètresre-passer les paramètres REST?

private function a(...myParams):void 
{ 
    trace(myParams.length); // returns 3 parameters 1,2,3 
    b(myParams); 
} 
private function b(...myParams):void 
{ 
    trace(myParams.length); // returns 1 parameter (array) [1,2,3] 
} 

a(1,2,3); 

La fonction un obtient un tableau de paramètres 1,2,3 mais quand il les transmet à fonctionner b, il les passe comme 1 paramètre (un tableau contenant le 3). Y at-il un moyen de les passer en 3 paramètres distincts au lieu d'un tableau?

Répondre

3

Oui, utilisez la méthode d'application que toutes les fonctions ont (les fonctions sont aussi des objets!). Alors, plutôt que ceci:

b(myParams); 

vous allez faire ceci:

b.apply(this, myParams); 
+0

Cela fonctionne, je ne comprends pas bien? –

+1

Eh bien, dans les fonctions ActionScript, ce sont aussi des objets. Une méthode à laquelle toutes les fonctions sont attachées s'appelle apply. Cette méthode vous permet d'exécuter une fonction dans un contexte spécifié (c'est le premier paramètre) et avec les arguments (c'est le second paramètre) que vous voulez. Chaque fois que vous avez un tableau, mais avez besoin de passer ce tableau en tant qu'arguments individuels à une fonction que vous pouvez appliquer. IIRC est commun à tous les langages basés sur ECMAScript, tels que Javascript. –

+0

Merci pour l'info! –