Transmettre le …rest à une fonction
Bon ce n’est pas grand chose, peut-être que tout le monde connait, mais j’ai découvert ça ce soir et je pense que ça peut toujours servir…
Imaginons la chose suivante :
Une fonction récupère deux arguments et les arguments additionnels stockés dans le tableau “rest” (c’est la nouvelle syntaxe d’AS3 qui permet ça).
Seulement, on souhaite appeler une autre fonction en lui transmettant les arguments contenus dans “rest”, ce n’est pas possible, puisque “rest” est un tableau…
function uneFonction(param1, param2, ...rest){
uneAutreFonction(rest);
// uneAutreFonction va recevoir un seul argument de type Array...
}
Voici la solution que j’ai trouvé sur un forum :
En utilisant la méthode apply de la classe Function, on peut transmettre un tableau d’arguments à une fonction.
Le premier argument de la méthode apply permet de transmettre la référence d’un objet qui sera accessible avec le mot clef “this” dans la fonction
(ce que fait la classe Delegate en AS2)
function uneFonction(param1, param2, ...rest){
uneAutreFonction.appy(null, rest);
// ici elle va recevoir tout les arguments du tableau rest
}
Si en plus on veut regrouper les deux premiers arguments avec le tableau rest, il suffit de faire :
function uneFonction(param1, param2, ...rest){
rest = [param1, param2].concat(rest);
uneAutreFonction.appy(null, rest);
/* une Autre Fonction va recevoir tout les arguments
transmis à uneFonction */
}
Publié dans AS3, Dev | 4 commentaires »
