2011-04-19 39 views
0

是否有任何方式,以确定是否(匿名)的功能在ActionScript 3中所定义的...(rest)参数?我知道有function.length属性,但它只计数显式定义的参数。Function.length和可变(...其余的)参数长度[AS3]

+0

我不明白你的意思是...休息,但你可以像参数[0]那样访问参数数组,所以如果你知道长度,你可以得到元素。 – 2011-04-20 00:27:00

回答

1

如果您的意思是检查函数是否在调用函数时定义了参数,那么真正做到这一点的唯一方法(就我所知)是将函数类原型化,然后在您的新原型函数类中捕获args数组参数并检查它是否为空。我不打算弄清楚,写所有的代码为你(没时间),但这里是一个很好的文章认为应该详细描述这一过程,让你对你的方式。

http://tobyho.com/Modifying_Core_Types_in_ActionScript_3_Using_the_Prototype_Object

1

有一种方法来确定是否一个函数定义的......其余参数,但你只能在函数体内确定这一点。在函数体外部,该函数具有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 
+0

我被专门寻找一种方法来检测这种功能以外,具有一定的光反射。 – forivall 2011-06-16 07:21:34