AS3变长参数展开以调用另一个具有var length args的函数

时间:2011-12-22 06:51:46

标签: actionscript-3

如何做到这一点

function foo(x:*, ...args):* {
}

function bar(x:*, ...args):* {
   foo(x, args); // how to expand args ? the args is an array now
}

如何扩展args?当我致电bar(1,2,3)时,我希望它致电foo(1,2,3),但会致电foo(1,[2,3])

2 个答案:

答案 0 :(得分:4)

function bar(x:*, ...args):* {
   args.unshift( x ); //add x to the front of the args array
   foo.apply( <scope>, args );
}

如果foobar在同一个班级中宣布<scope>应为this,否则它应该是宣布foo的类的实例,如果foo是全局函数,则应为null

foo.apply( this, args );
//-- or --
foo.apply( myFooInstance, args );
//-- or --
foo.apply( null, args );

答案 1 :(得分:-1)

我相信这部分回答了你的问题: http://www.flex888.com/574/can-i-have-a-variable-number-of-arguments-in-as3.html

但是,我认为不可能以任何合理的方式完成您的要求。