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