AS3 ...(其余)参数

Onu*_*rım 2 rest arguments function actionscript-3

我测试了以下代码:

function aa(...aArgs):void
{
    trace("aa:", aArgs.length);
    bb(aArgs);
}
function bb(...bArgs):void
{
    trace("bb:", bArgs.length);
}
aa(); //calling aa without any arguments.
Run Code Online (Sandbox Code Playgroud)

输出是:

aa: 0 //this is expected.
bb: 1 //this is not!
Run Code Online (Sandbox Code Playgroud)

当我将空参数(aArgs)传递给bb函数时; 它不应该返回0长度?好像函数bb将传递的aArgs视为非空/非null.

我在这里错过了什么?

任何帮助表示赞赏.问候..

Rya*_*ill 9

它看起来像aArgs进入bb()函数将是一个空数组,但一个数组一点也不...我会说输出是预期的.虽然我得到了所需的输出,但我不确定如何格式化它...

更新1:

我想澄清一下.你拥有的基本上是一样的:

function aa(...aArgs):void
{
    myArray:Array = aArgs;
    bb(myArray);
}
function bb(...bArgs):void
{
    trace("bb:", bArgs.length);
}
aa(); //calling aa without any arguments.
Run Code Online (Sandbox Code Playgroud)

如果你看到这个代码,你会期望bb:1是吗?

更新2:

这个线程:用数组填充(... rest)参数?看起来好像很有意义.它使用apply()函数将数组作为参数列表传入. http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/Function.html#apply()


小智 6

不知道这是否仍然相关,但你可以试试这个:

function aa(...aArgs):void {
    var myArray:Array = aArgs;
    bb.apply( this, myArray );
}
function bb(...bArgs):void {
    trace("bb:", bArgs.length);
}
aa(); //calling aa without any arguments.
Run Code Online (Sandbox Code Playgroud)

基本上Function.apply是你的朋友.