Есть способ определить, если функция определила параметр ... 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