[AS3] Paramètres avec “arguments” et “…(rest)”

6 février 2008 – 13:57

Ce 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 !

Post a Comment