[AS3] Paramètres avec “arguments” et “…(rest)”
6 février 2008 – 13:57Ce n'est que très récemment que j'ai découvert la classe "arguments" qui s'occupe de stocker et de donner accès aux arguments que l'on passe à une méthode sous la forme d'un tableau (array). Et suite à une conversation avec un autre développeur j'ai appris l'existence du paramètre "...(rest)" qui permet de passer un nombre indéfinis d'arguments à une méthode et de les récupérer sous forme de tableau. Ce qui, dans certains cas, s'avère extrêmement pratique !
Quelques exemples :
arguments
myMethod("Hello", "World"); function myMethod(str:String, str2:String):void { trace(arguments.callee == this.myMethod)// true trace(arguments.length); // 2 trace(arguments[0]); // Hello trace(arguments[1]); // World trace(str,str2); // Hello World }
La propriété callee renvoit une référence vers la fonction qui appelé la méthode. Pour gérer les erreurs, il y a aussi une classe ArgumentError.
...(rest)
trace(somme(5,8,2,3)); // 18 function somme(...args) : Number{ var s:Number = 0; for (var i:uint = 0; i < args.length; i++) { s += args[i]; } return (s); }
Ce qui compte c'est les "..." le mot qui suit est simplement identifiant. Je peux utiliser ...args ou ...rest, c'est pareil. Si la méthode doit recevoir d'autres arguments, veillez à bien mettre "...(rest)" en dernier, après tous les arguments obligatoires. J'ai exécuté la méthode somme en passant quelques chiffres que je récupère via le tableau args.
Pratique !