首先,AS3里function的參數(shù)可以有默認(rèn)值了。
public function TestFunc(){ myFunc(); } private function myFunc(para1:int=10,para2:String="str"):void{ trace(para1 + " , " + para2); //10 , str }
AS3里不能給出多余的參數(shù),
public function TestFunc(){ myFunc(2,"3",4); } private function myFunc(para1:int,para2:String):void{ trace(para1 + " , " + para2); }
編譯器給出參數(shù)不匹配的錯(cuò)誤:ArgumentError: Error #1063: Argument count mismatch on TestFunc/TestFunc::myFunc(). Expected 2, got 3.
這樣以前那種用 arguments 拿到不固定參數(shù)的方法就不能用了。AS3給出一個(gè)新的關(guān)鍵字:… (rest) parameter
public function TestFunc(){ myFunc(2,"3",4,"5",true); } private function myFunc(para1:int,para2:String,... more):void{ trace(para1 + " , " + para2); //2 , 3 trace(more); //4,5,true }
在固定的參數(shù)后面跟一個(gè) “…” 和一個(gè)表達(dá)式(如例子中的“more”),“…” 后面所有的參數(shù)將被放到以該表達(dá)式命名的數(shù)組中。注意 “…” 必須是最后一個(gè)參數(shù)。
如果使用 “…” arguments 就不可用了,自然也就拿不到 arguments.callee(對當(dāng)前正在執(zhí)行的函數(shù)的引用),所以在確定不使用 callee 的情況下才能用 “…”。
提到 arguments ,arguments.caller 已經(jīng)被 “remove” 了。要想拿到 caller 需要把調(diào)用函數(shù)的 callee 作為參數(shù)傳給被調(diào)用函數(shù)。官方的例子:
package { import flash.display.Sprite; public class ArgumentsExample extends Sprite { private var count:int = 1; public function ArgumentsExample() { firstFunction(true); } public function firstFunction(callSecond:Boolean) { trace(count + ": firstFunction"); if(callSecond) { secondFunction(arguments.callee); } else { trace("CALLS STOPPED"); } } public function secondFunction(caller:Function) { trace(count + ": secondFunction\n"); count++; caller(false); } } }
出處:藍(lán)色理想
責(zé)任編輯:moby
上一頁 event 下一頁 SimpleButton
◎進(jìn)入論壇Flash專欄版塊參加討論
|