PDA

Просмотр полной версии : Вызов метода с переменным количеством аргументов


CaribbeanLegend
09.08.2010, 10:43
Приветствую всех!

Появилась небольшая проблема.
Есть метод, принимающий переменное количество аргументов.
Его синтаксис:
public static function someMethod(_source:String, ... _params):void
Есть еще один метод, который тоже принимает переменное количество аргументов и использует метод выше. Его реализация:
public static function anotherMethod(_text:String, ... _params):void
{
// ...
someMethod(_text, _params);
// ...
}
Хочется, чтобы при вызове метода anotherMethod опциональные аргументы передавались и в someMethod. Как такое реализовать?
При реализации как показано, ессна, ничего толкового не происходит.

gr_crd
09.08.2010, 11:30
public static function someMethod(_source:String, ... _params):void{
for(var i:int=0;i<_params.length;i++){
trace(_params[i]);
}
}


При реализации как показано, ессна, ничего толкового не происходит.
Незнаю как у вас, но trace показал, что при вызове anotherMethod("a",1,2,3); в someMethod эти параметры (_params) нормально передаются.

// UPD
Хотя да, каждое число получается NaN

Тогда пожалуй поможет полное копирование массива _params.
// UPD
не помогло :)

CaribbeanLegend
09.08.2010, 12:23
В общем, сам отвечу на свой вопрос :)
Для того, чтобы работало, следует вызывать как
public static function anotherMethod(_text:String, ... _params):void
{
// ...
_params.unshift(_text);
someMethod.apply(null, _params);
// ...
}

Zik.
09.08.2010, 12:24
public static function someMethod(_source:String, _params:Array):void
Ну вот и все

CaribbeanLegend
09.08.2010, 12:48
public static function someMethod(_source:String, _params:Array):void
Ну вот и все
Кстати, тоже вариант :) Но именно с переменным количеством аргументов выглядит как-то более лаконично.

Всем большое спасибо за внимание :)