当前位置:  开发笔记 > 编程语言 > 正文

AS3 ...(其余)参数

如何解决《AS3(其余)参数》经验,为你挑选了2个好方法。

我测试了以下代码:

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

输出是:

aa: 0 //this is expected.
bb: 1 //this is not!

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

我在这里错过了什么?

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



1> Ryan Guill..:

它看起来像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.

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

更新2:

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



2> 小智..:

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

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.

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

推荐阅读
yzh148448
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有