|
|
|||||
[+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,879
Записей в блоге: 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, время: 19:06. |
|
« Предыдущая тема | Следующая тема » |
|
|