![]() |
|
||||||||||
|
|||||
|
[+1 14.08.08]
[+1 20.08.08] |
привет. понадобилась функция, которая бы возвращала несколько значений.
можно передать переменную в функцию ссылкой, а не копией?
__________________
~ Never trouble trouble till trouble troubles you! |
|
|||||
|
Что-то я не до конца понимаю...
По-моему первой функции вообще ничего не передается root_a = 1;
function test (a:Number) {
a = 2;
trace(a) //выводит 2
}
test (a);
trace (a)//выводит undefined
* * * C функцией test2 тоже непонятности... а если подправить вот так то становится ясно что функции без разницы передаем мы ей ссылку или объект, она обращается напрямую к объекту b лежащему на руте Последний раз редактировалось terbooter; 17.10.2007 в 07:49. |
|
|||||
|
...
модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
|
Цитата:
Цитата:
|
|
|||||
|
Регистрация: Oct 2006
Адрес: spb.ru
Сообщений: 3,221
|
b = {a:0, id:'b'};
c = {a:0, id:'c'};
obj = {a:555, id:'obj'};
myTrace(b);
myTrace(c);
myTrace(obj);
trace('---------------');
test1(b);
test1(c);
myTrace(b);
myTrace(c);
myTrace(obj);
trace('---------------');
test2(b);
test2(c);
myTrace(b);
myTrace(c);
myTrace(obj);
function test1(obj:Object):Void {
//передаем объект параметром,
//но работаем с другим объектом,
//что ни передадим - меняется b
b.a = 2;
}
function test2 (obj:Object):Void {
//передаем объект параметром
//и работаем с ним - меняется объект который передали,
//а не рутовый obj
obj.a = 2;
}
function myTrace(obj:Object):Void{
trace (obj.id + ':' + obj.a);
}
Последний раз редактировалось Kikasso; 17.10.2007 в 09:20. |
|
|||||
|
Я это все к тому, что мне думается, что пример iNils
ни подтверждает, ни опровергает его утверждение. Пример Kikasso подтверждает, что функции передается ссылка на объект. Последний раз редактировалось terbooter; 17.10.2007 в 10:24. |
|
|||||
|
Регистрация: Oct 2006
Адрес: spb.ru
Сообщений: 3,221
|
Цитата:
Последний раз редактировалось Kikasso; 17.10.2007 в 11:01. |
|
|||||
|
Негуру
администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,883
Записей в блоге: 7
|
Цитата:
Именно потому, что передается ссылку на объект, мы смогли изменить значение b.a. Ваши слова лишь показывают, что вы не разбираетесь в области видимости переменных. |
|
|||||
|
Banned
[+4 01.02.09]
[+1 01.02.09] |
Цитата:
a = 1; // а - тут переменная
function test (a) { // а - здесь аргумент функции, по несчастью имеющий то же имя что и переменная
trace (a) // тут 1 (показывает принятый аргумент)
a = 2; // собственно аргументу функции переназначается значение равное 2-м
trace (a) // тут 2 (показывает переназначенный аргумент)
}
test (a);
trace (a) // а тут все равно 1; (показывает переменную, а вовсе не аргумент функции)
|
![]() |
![]() |
Часовой пояс GMT +4, время: 14:27. |
|
|
« Предыдущая тема | Следующая тема » |
|
|