|
|
|||||
Регистрация: Dec 2014
Адрес: Санкт-Петербург
Сообщений: 479
|
Сами объекты и ссылки на них
Друзья, поясните мне, пожалуйста, ещё один момент.
Столкнулся с такой ситуацией. Создаю в неком классе массив, наполняю какими-то элементами. Передаю в конструктор другого класса, которому поручено переписать все элементы полученного массива "к себе" и как-то с ними поработать, но (самое главное!) оставить в целости оригинальный массив, полученный из вне. Но вот такая запись: private var _intermalArray: Array = []; public function SomeClass(externalArray: Array) { _internalArray = externalArray; } P.S. Задачу пока что решил через цикл, который последовательно перебирает элементы полученного массива и записывает по одному во внутренний. В таком случае они действительно разными получаются.
__________________
Не сломано - не чини! |
|
|||||
Да, это азы. Копируются только значения примитивных типов: Int, Uint, String, Number. Для любых объектов, коим является и массив, передаётся ссылка на объект.
Если ещё не читал Колина Мука - самое время
__________________
Дети не должны знать о своих родителях Последний раз редактировалось Tails; 18.05.2018 в 13:07. |
|
|||||
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Однако надо понимать, что внутри массива тоже хранятся ССЫЛКИ, и при его дублировании сами объекты – элементы массива не дублируются, то есть ты получаешь дубликат массива как упорядоченной структуры, и можешь поиграться с этой структурой, переставляя, удаляя и добавляя элементы, т.е. меняя МАССИВ.
__________________
Reality.getBounds(this); |
|
|||||
Регистрация: Dec 2014
Адрес: Санкт-Петербург
Сообщений: 479
|
Tails, Wolsh, спасибо, исчерпывающе. Наверное я из-за примитивных типов и запутался, т.к. в основном применительно к ним подобное происходит: получили, скопировали, поработали с результатом.
__________________
Не сломано - не чини! |
|
|||||
__________________
Ко мне можно и нужно обращаться на ты) |
|
|||||
Регистрация: Jul 2014
Сообщений: 42
|
Позволю себе добавить, что работа с типизированным списком Vector для широкого круга задач более рациональна.
https://help.adobe.com/ru_RU/as3/mob...c87b-7fff.html |
|
|||||
Цитата:
Ну это так, отступление, все равно он работает быстрее простого массива, видимо из-а отсутствия боксинга внутри. А я хотел здесь сказать, что для широкого круга задач, как раз рациональнее исползовать Array, потому, что с ним в коде работать проще. А Vector лучше использовать для узкого круга, где объектов нужно обрабатывать очень много и скорость играет важную роль
__________________
Ко мне можно и нужно обращаться на ты) |
|
|||||
Регистрация: Jul 2014
Сообщений: 42
|
Цитата:
Если для Array преимущество в гибкости(принимает любые типы), то для Vector в наглядности(известно, с каким типом работаем) Последний раз редактировалось DEVORON; 18.05.2018 в 23:30. |
|
|||||
Цитата:
__________________
Ко мне можно и нужно обращаться на ты) |
|
|||||
Регистрация: Dec 2014
Адрес: Санкт-Петербург
Сообщений: 479
|
Цитата:
И да, на практике у меня уже несколько раз получалось сначала забацать Array, а потом по мере упорядочивания процесса переводить его в Vector.
__________________
Не сломано - не чини! |
Часовой пояс GMT +4, время: 12:42. |
|
« Предыдущая тема | Следующая тема » |
|
|