Скажем, у меня есть этот класс:
package{
import flash.display.Sprite;
public class Main extends Sprite{
public function Main(){
trace(getAverage(1,2,3));
trace(getAverage(1,2,3,4));
trace(getAverage(1,2,3,4,5));
}
public function getAverage (...numbers) {
var total = 0;
for (var i = 0; i < numbers.length; i++) {
total += numbers [i];
}
return total / numbers.length;
}
}
}
Как мне достичь «противоположности»? А именно, как я могу теперь ВЫЗВАТЬ «getAverage» с динамическим числом параметров?
Например, если бы я хотел что-то сделать LIKE :
var r:int=Math.random()*6;
var a:Array=new Array();
for (i:int=0;i<r;i++) {
a[i]=Math.random()*22;
}
// Now I have 'r' Number Of Parameters Stored In 'a'
// How Do I Call getAverage, with all the values in 'a'??
// getAverage(a) isn't right, is it?
// I'm looking for something similar to getAverage(a[0],a[1],a[...]);
var av:Number=getAverage(???);
Что я хочу знать, так это то, что если у меня есть функция, которая принимает переменное число аргументов, это здорово, но как я могу ВЫЗВАТЬ ЭТО с переменным числом аргументов, если это число не известно во время выполнения? Возможно, это невозможно ... Я просто не уверен, поскольку callLater, похоже, может взять массив и каким-то образом сгенерировать из него динамическое число параметров ...
ПРИМЕЧАНИЕ: Ответы, состоящие исключительно из «Почему вы хотите это сделать?», Будут опущены.
P.S. НЕ предназначен для расчета средних значений! I РЕАЛИЗОВАН Существуют более простые способы сделать все это! (Я мог бы просто написать getAverage, чтобы принять единственный массив в качестве единственного параметра) Выше приведен просто ПРИМЕР, иллюстрирующий мой вопрос. КАК ПЕРЕЙТИ ДИНАМИЧЕСКОЕ ЧИСЛО ПАРАМЕТРОВ В ФУНКЦИЮ?