2009-02-23 23 views
6

ActionScript 3.0 có cung cấp bất kỳ phương tiện nào để chấp nhận số tham số tùy ý không? Tôi thường sử dụng NET, nhưng tôi đang bị buộc phải sử dụng AS3 cho một dự án và một cái gì đó dọc theo dòng chức năng blah (params double [] x) sẽ là tuyệt vời cho một thư viện trợ giúp.Số tham số tùy ý trong AS3

Cảm ơn;

Trả lời

14

Kiểm tra các thông số còn lại: 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

Có thể chỉ định loại cho arg không? tức là, ... args: int? –

+2

Nevermind - bạn không thể –

3

Hãy thử một hình elip (như C) ...

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

Nếu bạn muốn vượt qua một số không xác định các giá trị đặt hàng chỉ cần vượt qua một mảng

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]); 

Nếu bạn muốn chuyển các thông số được đặt tên mà chỉ một số thông số được chuyển thì hãy sử dụng một đối tượng

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

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

Ngoài các tham số "rest", có một "arguments" đối tượng.

function foo() { 
    for (var i:Number = 0; i < arguments.length; i++) { 
     trace(arguments[i]); 
    } 
} 
Các vấn đề liên quan