Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Object передаётся по линку или по значению? (http://www.flasher.ru/forum/showthread.php?t=176681)

BuKT 15.03.2012 14:27

Object передаётся по линку или по значению?
 
Код AS3:

for each (var field:String in someObject) {
        someObject[field] = someOtherObject[field]
}

Будут ли равны поля этих Object, учитывая, что (someOtherObject[field] as Object) == null?

Aquahawk 15.03.2012 14:32

В терминах низкоуровневых языков объекты хранят указатели на другие объекты, а передаются указатели по значению. Сами указатели передаются, а не объекты.
Если someOtherObject[field] == null то там хранится указатель на нулевой адрес. При
Код AS3:

someObject[field] = someOtherObject[field];

этот указатель на нулевой адрес копируется в someObject. Таким образом они оба указывают на ноль.
Теперь если мы сделаем
Код AS3:

someOtherObject[field] = new Object();

то someOtherObject будет указывать на новый объект. Однако someObject продолжит указывать на null.

nOobCrafter 15.03.2012 14:33

сложные типы данных передаются по ссылке, простые по значению. простые это int, uint, String, Boolean вроде все, но может забыл чтото.

Aquahawk 15.03.2012 14:38

Код AS3:

 (someOtherObject[field] as Object) == null

а зачем тут as Object?

BuKT 15.03.2012 14:49

Цитата:

а зачем тут as Object
Просто чтобы показать, что в someOtherObject[field] хранится тип, передаваемый значением а не ссылкой

Aquahawk 15.03.2012 14:55

а какой такой тип у нас хранится значение кроме интов, намберов, булеанов и строк, которые были уже упомянуты выше?

BuKT 15.03.2012 14:57

Никакой =) Перечитайте мой ответ ещё раз.

Psycho Tiger 15.03.2012 15:52

Конструкция as Object может быть полезна только для того, чтобы компилятор принял этот экземпляр в качестве экземпляра динамического класса и не ругался на возможно неопределенные свойства. В остальном случае это вызывает только путаницу и ощущение описок.

Inet_PC 15.03.2012 15:58

Видимо ВиКТ пытался, таким образом, показать, что в массиве лежат не простые типы?

Aquahawk 15.03.2012 16:03

BuKT так ответ на твой вопрос получен или нет? Если нет, то мог бы ты переформулировать его?


Часовой пояс GMT +4, время: 19:20.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.