2009-02-23 8 views
6

ActionScript 3.0 offre-t-il un moyen d'accepter un nombre arbitraire de paramètres? J'utilise habituellement .NET, mais je suis obligé d'utiliser AS3 pour un projet et quelque chose dans le genre de la fonction blah (params double [] x) serait génial pour une bibliothèque auxiliaire.Nombre arbitraire de paramètres dans AS3

Merci;

Répondre

14

Vérifiez le paramètre de repos: http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/statements.html#..._(rest)_parameter

package { 
    import flash.display.MovieClip; 

    public class RestParamExample extends MovieClip { 
    public function RestParamExample() { 
     traceParams(100, 130, "two"); // 100,130,two 
     trace(average(4, 7, 13));  // 8 
    } 
    } 
} 


function traceParams(... rest) { 
trace(rest); 
} 

function average(... args) : Number{ 
    var sum:Number = 0; 
    for (var i:uint = 0; i < args.length; i++) { 
    sum += args[i]; 
    } 
    return (sum/args.length); 
} 
+0

Est-il possible de spécifier le type pour args? c'est-à-dire, ... args: int? –

+2

Nevermind - vous ne pouvez pas –

3

Essayez une ellipse (comme C) ...

function trace_all (... args): void { 
    for each (a in args) { 
     trace (a); 
    } 
} 
0

Si vous voulez passer un nombre indéterminé de valeurs ordonnées juste passer un tableau

function foobar(values:Array):void 
{ 
    ... 
} 


foobat([1.0, 3.4, 4.5]); 
foobat([34.6, 52.3, 434.5, 3344.5, 3562.435, 1, 1, 2, 5]); 

Si vous voulez passer des paramètres nommés où seuls certains d'entre eux sont passés, utilisez un objet

function woof(params:object):string 
    { 
     if (params.hasProperty('name')) { 
      return name + "xxx"; 
     } 
     ... 
    } 

    woof({name:'Joe Blow', count: 123, title: 'Mr. Wonderful'}); 
2

En plus du paramètre « rest », il y a un objet « arguments ».

function foo() { 
    for (var i:Number = 0; i < arguments.length; i++) { 
     trace(arguments[i]); 
    } 
}