代码之家  ›  专栏  ›  技术社区  ›  Onur Yıldırım

AS3…(rest)参数

  •  2
  • Onur Yıldırım  · 技术社区  · 17 年前

    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视为非空/非空。。

    我错过了什么?

    如有任何帮助,我们将不胜感激。 当做。。

    3 回复  |  直到 17 年前
        1
  •  9
  •   Community Mohan Dere    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.
    

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

    更新2:

    此线程: filling in (...rest) parameters with an array? 看来这是相关的。它使用apply()函数将数组作为参数列表传入。 http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/Function.html#apply()

        2
  •  6
  •   user56250 user56250    17 年前

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

    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.
    

    基本功能。apply是你的朋友。

        3
  •  2
  •   Tyler Egeto    17 年前

    推荐文章