Волгоградец
13.11.2009, 17:43
Привет.
У меня не вызывается arguments не из FD, не из IDE. Может есть какая хитрость?
GentleFLASH
13.11.2009, 19:33
смотря как и откуда вызывать )
В AS3 всё немного поменялось.
1) Этот пример
function f(a:Number, b:Number, c:Number):void{
trace(arguments);
}
f(1, 2, 3); //выводит 1, 2, 3
откомпилится и сработает без ошибок.
2) Этот
function f():void{
trace(arguments);
}
f(1, 2, 3); //ERROR
вызовет ошибку компиляции, т.к. в AS3 вы не можете передавать произвольное количество параметров, явно не указав на это.
3) Следующий пример
function f(...args:Array):void{
trace(arguments); //ERROR
}
f(1, 2, 3);
также вызовет ошибку компиляции, т.к. arguments у вас теперь называется args.
4) А вот этот
function f(...args:Array):void{
trace(args);
}
f(1, 2, 3); //выводит 1, 2, 3
заработает как надо.
P.S. Мне осталось непонятным, что делать в данной ситуации:
function f(a:Number, ...args:Array):void{
trace('args: ' + args);
}
f(1, 2, 3); //выводит args: 2, 3
Понятно, то первый аргумент доступен через переменную a, но нельзя ли как-нибудь обратиться ко всем аргументам сразу, в виде массива? Я, помнится, когда-то пробовал поэкспериментировать, но так ничего из этого и не вышло.
Ну эт понятно. Нет, я говорил о другом. Представим, что таких параметров... ну 10 хотя бы :)
На самом деле, практической пользы в этом особой нет, просто интересно)
bicubic_bublic
15.11.2009, 00:04
args.shift(a); ?
args.unshift(a);
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.