Является ли Object предпочтительным ассоциативным контейнером в AS3? - PullRequest
3 голосов
/ 20 октября 2010

Я использовал Object как способ получения универсального ассоциативного массива (карта / словарь), поскольку AS3 / Flex в этом отношении выглядит весьма ограниченным. Но мне действительно не нравится, что это происходит из C ++ / Java / C # фона. Есть ли лучший способ, какой-нибудь стандартный класс, с которым я не сталкивался ... это даже считается хорошим / плохим в AS3?

Ответы [ 2 ]

5 голосов
/ 20 октября 2010

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

Существует также класс Dictionary, flash.utils.Dictionary.

Разница в том, что Dictionary может использовать любое значение в качестве ключа, включая объекты, в то время как Object использует строковые ключи.Для большинства применений предпочтительным является Object, так как он более быстрый и охватывает большинство случаев использования.

Подробнее о Object можно посмотреть здесь: http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/Object.html и Dictionary здесь:http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/flash/utils/Dictionary.html и различия между ними здесь: http://livedocs.adobe.com/flex/3/html/help.html?content=10_Lists_of_data_4.html

2 голосов
/ 21 октября 2010

Боюсь, что нет нативной альтернативы Object или Dictionary для карт и других структур.Что касается стандарта , это зависит от того, как определить стандарт, но есть пара известных библиотек, которые вы могли бы проверить, ищите ли вы коллекции стилей Java.

Нравитсявот этот:

http://sibirjak.com/blog/collections/as3commons-collections/

Также вы можете взглянуть на этот вопрос, который имеет ссылки на пару библиотек ds (включая вышеупомянутую).

Коллекции в Adobe Flex

Я бы не сказал, что использование объектов - это либо хорошая, либо плохая практика.В общем случае они быстрее, чем любая альтернатива Actionscript (поскольку они являются нативными), но менее функциональны.Иногда предоставляемый функционал достаточно хорош.Иногда это немного скудно, поэтому что-то более структурированное может помочь вам избавиться от деталей более низкого уровня в вашем коде и сосредоточиться, так сказать, на «доменной логике».

В конце концов, все эти библиотеки реализуют свои структуры данных через объекты, словари и массивы (или векторы).Так что, если нативные объекты подходят для ваших нужд, я бы сказал, пойти с ними.С другой стороны, если вы обнаружите, что в основном переписываете, скажем, специальный набор, возможно, использование одной из этих библиотек было бы мудрым выбором.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...