Function.length和variable(... rest)参数长度[AS3]

时间:2011-04-19 22:54:11

标签: actionscript-3

有没有办法确定(匿名)函数是否在ActionScript 3中定义了...(rest)参数?我知道有function.length属性,但它只计算明确定义的参数。

2 个答案:

答案 0 :(得分:1)

如果你的意思是检查函数在调用时是否已经定义了参数,那么真正做到这一点(据我所知)的唯一方法是对函数类进行原型设计,然后在新的原型函数类中,捕获args数组参数并检查它是否为null。我不打算弄清楚并为你编写所有代码(缺少时间),但这篇文章应该完整地描述这个过程并让你顺利完成。

http://tobyho.com/Modifying_Core_Types_in_ActionScript_3_Using_the_Prototype_Object

答案 1 :(得分:1)

有一种方法可以确定一个函数是否定义了一个... rest参数,但是你只能在函数体内确定它。在函数体外,函数有0个参数,如第一个跟踪输出所示。实际上,这个... rest参数是一个只在函数体内有范围的数组。但是,一旦进入函数体,就可以对其进行测试,如第二个和第三个跟踪输出所示。

    public function Test()
    {
        trace(doSomething.length);
        doSomething(7, 8, 9, 10);
    }

    public function doSomething(...numbers):void
    {
        if (numbers.length > 0) trace("Found the parameters!");
        for (var i:int = 0; i < numbers.length; i++) trace(numbers[i]);
    }

Output: 0    
Output: Found the parameters!    
Output: 7 8 9 10