我有幾個接受幾個參數的函數。如何在不知道名稱的情況下遍歷所有參數
public function somefunc(param1:String, param2:String, param3:String):void{
}
有沒有一種方法來遍歷所有PARAMS(不知道有多少或他們的名字),並把它們在某種與自己名字的數組,所以我會得到一個關聯數組
[
param1: "value 1"
param2: "value 2"
param3: "value 3"
]
我有幾個接受幾個參數的函數。如何在不知道名稱的情況下遍歷所有參數
public function somefunc(param1:String, param2:String, param3:String):void{
}
有沒有一種方法來遍歷所有PARAMS(不知道有多少或他們的名字),並把它們在某種與自己名字的數組,所以我會得到一個關聯數組
[
param1: "value 1"
param2: "value 2"
param3: "value 3"
]
對象arguments存儲函數的參數,你可以使用length
屬性來獲取參數的個數。但它不提供參數的名稱,即它不會提供名稱param1, param2
等,它只會提供它們的值。
您可以在函數參數使用其他參數(...
)列出通過他們接受的參數任何量和循環,像這樣:
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);
這是正確的答案。你應該使用'... rest:*'來使它類型安全。 – weltraumpirat
但你不必做for循環 - 有'arguments'對象,它已經包含了所有的參數:http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3 /arguments.html – pkyeck
我在發佈問題並找到'arguments'後,正在做一些搜索。我喜歡它,但它與@package提出的'rest'解決方案有何不同? – sameold
當你需要可變長度的參數時,'rest'更有用,那就是你不知道參數的個數。考慮「跟蹤」功能。它需要可變長度參數,即可以傳遞任意數量的參數給它。編寫這種函數需要'rest'。如果在編寫該函數時知道函數的參數個數,則可能不需要休息。 – taskinoor