星期四, 1月 28, 2010

多引數函數 ... (rest) parameter 定義關鍵字

... (rest) parameter
定義關鍵字
用法

function functionName(parameter0, parameter1, ...rest){ 
 // statement(s) 
} 

語言版本: 
ActionScript 3.0
執行階段版本: 
Flash Player 9
指定函數將接受任何數量的逗號分隔引數。此引數清單會變成整個函數主體都可使用的陣列。此陣列名稱會在參數宣告中的 ... 字元後面指定,該參數可以包含任何不是保留字的名稱。
如果與其它參數一併使用,則 ... (rest) 參數宣告必須是最後指定的參數。只有當傳遞至函數的引數數量超出其它參數數量時,才會填入 ... (rest) 參數陣列。
逗號分隔引數清單中的每個引數都會放入陣列元素中。如果您傳遞 Array 類別的實體,則會將整個陣列放入 ... (rest) 參數陣列的單一元素中。
使用此參數將會使得 arguments 物件無法使用。雖然 ... (rest) 參數可提供您等同 arguments 陣列與 arguments.length 屬性的功能,但卻無法提供類似 arguments.callee 所提供的功能。在使用 ... (rest) 參數之前,請確定您不需要使用 arguments.callee。
參數

rest:* — 代表傳入函數之引數陣列名稱的識別名稱。該參數不一定要稱為 rest,而是可以為任何非關鍵字的名稱。您可以將 ... (rest) 參數的資料類型指定為 Array,但是這麼做可能會造成混淆,因為參數會接受逗號分隔的數值清單,而該清單與 Array 類別的實體並不相同。

範例
如何使用範例
下列範例會在兩個不同的函數中使用 ...(rest) 參數。第一個函數 traceParams 只會針對 rest 陣列中每個引數呼叫 trace() 函數。第二個函數 average() 會採用引數清單,並傳回平均差值,同時也會使用不同的參數名稱 args。

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

請參閱

引用:
ActionScript 3.0 語言和組件參考 - 陳述式、關鍵字和指令

沒有留言:

張貼留言