2011-11-30 60 views
0

我有幾個接受幾個參數的函數。如何在不知道名稱的情況下遍歷所有參數

public function somefunc(param1:String, param2:String, param3:String):void{ 

} 

有沒有一種方法來遍歷所有PARAMS(不知道有多少或他們的名字),並把它們在某種與自己名字的數組,所以我會得到一個關聯數組

[ 
param1: "value 1" 
param2: "value 2" 
param3: "value 3" 
] 

回答

4

對象arguments存儲函數的參數,你可以使用length屬性來獲取參數的個數。但它不提供參數的名稱,即它不會提供名稱param1, param2等,它只會提供它們的值。

+0

我在發佈問題並找到'arguments'後,正在做一些搜索。我喜歡它,但它與@package提出的'rest'解決方案有何不同? – sameold

+0

當你需要可變長度的參數時,'rest'更有用,那就是你不知道參數的個數。考慮「跟蹤」功能。它需要可變長度參數,即可以傳遞任意數量的參數給它。編寫這種函數需要'rest'。如果在編寫該函數時知道函數的參數個數,則可能不需要休息。 – taskinoor

2

您可以在函數參數使用其他參數(...)列出通過他們接受的參數任何量和循環,像這樣:

public function somefunc(param1:String, param2:String, param3:String, ... rest):void { 
    for (var i:int = 0; i < rest.length; i++) { 
     trace(rest[i]); 
    } 
} 

,並要求您功能如下:

somefunc(param1, param2, param3, param4, param5, ect); 
+0

這是正確的答案。你應該使用'... rest:*'來使它類型安全。 – weltraumpirat

+0

但你不必做for循環 - 有'arguments'對象,它已經包含了所有的參數:http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3 /arguments.html – pkyeck

相關問題