Стандартная структура карты / ассоциативного массива для использования во flash Actionscript 3? - PullRequest
3 голосов
/ 25 апреля 2010

Я относительно новичок во флэш-памяти и не понимаю, что мне следует использовать для хранения и получения пар ключ-значение. После некоторого поиска в Google я нашел несколько картоподобных вещей на выбор:

1) Использовать объект:

var map:Object = new Object();
map["key"] = "value";

Проблема в том, что в ней отсутствуют некоторые базовые функции. Например, чтобы получить размер карты, я должен написать метод util.

2) Используйте словарь

Что этот стандартный класс библиотеки предоставляет над простым объектом? Кажется глупым существовать, если он функционально идентичен объекту.

3) Загрузите некоторую пользовательскую реализацию HashMap / HashTable из Интернета.

Я использовал много современных языков, и я впервые не смог найти библиотечную реализацию ассоциативного массива за 5 минут. Поэтому я хотел бы получить совет от опытного разработчика флэш-памяти.

Спасибо!

Ответы [ 2 ]

1 голос
/ 25 апреля 2010

Может быть, ваш Google Foo немного слаб сегодня?

Но вы правы, встроенный объект Object не предоставляет много дополнительных функций.

Словари имеют как минимум два важных отличия от Объектов:

Они могут использовать любой объект в качестве ключа. Для Объектов ключ должен быть строкой (если вы передадите какой-либо другой объект, метод toString () будет вызван неявно).

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

В любом случае, существует ряд библиотек с открытым исходным кодом, которые реализуют различные структуры данных и типы коллекций.

Просто с макушки головы:

http://lab.polygonal.de/ds/

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

0 голосов
/ 25 апреля 2010

Вы должны использовать тот параметр, который необходим для конкретной ситуации.Не существует правильного ответа на вопрос «всегда используйте« x »».

Я обнаружил, что в подавляющем большинстве случаев словари, основанные на Object, - это все, что нужно.Они чрезвычайно быстры и просты в использовании, и мне почти никогда не нужны дополнительные функции.Он преобразует любой ключ в строку, которая хорошо работает в большинстве ситуаций.

Dictionary предоставляет некоторые дополнительные функции, но мне никогда не требовались ключи на основе объектов (и я программировал на Flex с версии 1.0 alpha 1).Единственный раз, когда я использовал Словарь, это как хак для получения доступа к слабой ссылке, так как Flex не предоставляет простой класс слабой ссылки.

Доступны более сложные словари, которые обеспечат большую функциональность.Если вам действительно нужны эти функции, то они будут полезны, но я бы не советовал использовать их, когда обычный старый Object найдет работу для ваших нужд.Тем не менее, если вам действительно понадобятся они в вашем приложении, может быть лучше использовать один и тот же сторонний словарь везде в этом приложении для согласованности и простоты обслуживания.

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