fhuan123 发表于 2013-2-4 22:50:46

定义函数时的…(rest)参数

在As3.0中,Function的参数数是被严格限制的,如果定义的参数数与实际参数不同时,系统会报错(incorrect number of arguments) ,那么,“… (rest) parameter”大概就是被派来解救那些困扰于这个问,的孩子们的…
package {import flash.display.Sprite;public class ArgTest extends Sprite {private var argArr:Array=new Array(”EEE”,”FFF”,”GGG”,”HHH”);private var obj=new Object();public function ArgTest() {myArgFunc(”AAA”, “BBB”,”CCC”);myArgFunc.apply(null,argArr)}public function myArgFunc(…args):void {//取args做为参数数组名trace(args);}}} 
从程序中可见,…args在作为参数集时与arguments class很相似.可其实args与arguments class的方法完全无关,两者不可混淆。
如下例是可行的:
package {import flash.display.Sprite;public class ArgTest extends Sprite {private var argArr:Array=new Array(”EEE”,”FFF”,”GGG”);private var count:Number=0;public function ArgTest() {myArgFunc(”AAA”, “BBB”,”CCC”);}public function myArgFunc(A,B,C):void {trace(arguments);if (count++<10) {myCallee(arguments.callee);}}public function myCallee(caller:Function) {caller.apply(null,argArr);}}} 

如果取用…args作为参数,则不管取args.callee还是arguments.callee都是无效的.须注意,在As3中,推荐用“… (rest) parameter”方法来代替arguments的(ActionScript 3.0 includes a new ...(rest) keyword that is recommended instead of the arguments class.).
另外发现Array.sort()和Array.splice()也用到了…(rest) ,暂且表过吧.
页: [1]
查看完整版本: 定义函数时的…(rest)参数