Класс Dictionary представляет собой новый вид Object в ActionScript 3.
Объекты Dictionary обладают специальной возможностью использовать
ссылки на объект в качестве его ключей, или имен переменных. Обычные
экземпляры Object (и другие экземпляры динамических классов) используют
обычные имена переменных, которые существенным образом приравниваются к
строкам (массивы также используют числа, хотя они могут приравниваться
к строкам в плане того, каким образом они обрабатываются в качестве
ключей). Словари могут использовать реальные ссылки на объекты.
// Only Dictionary instances can have// object references as keys var arr:Array = new Array(); arr[0] = "value"; var obj:Object = new Object(); obj["variable"] = "value"; var dict:Dictionary = new Dictionary(); dict[arr] = "value1"; dict[obj] = "value2"; Если
вы попытаетесь использовать объекты в качестве ключей внутри обычных,
обобщенных экземпляров Object, то использованные ключи фактически
станут строковым представлением этих объектов, а не реальными
объектами, как в случае с классом Dictionary. Словари
в большинстве случаев используются для хранения информации о других
объектах, когда эти другие объекты не способны продвигать эту
информацию самостоятельно. Например, если у вас есть набор экземпляров
Point (где Point является изолированным классом, означающим, что
дополнительные значения не могут быть связаны с экземплярами данного
класса), и вам нужно значение имени привязать к каждой из этих точек,
то все, что вы можете сделать, это использовать экземпляр Dictionary,
чтобы поместить туда имена каждой точки с использованием экземпляра
Point в качестве ключа.
// Use Dictionary for name association with inatances // Assuming ptA - ptC are Point instances var names:Dictionary = new Dictionary(); names[ptA] = "A"; names[ptB] = "B"; names[ptC] = "C"; // Point A properties ptA.x; // x value ptA.y; // y value names[ptA]; // name ("A") Поскольку
экземпляры Point не имеют свойства name и потому, что они не динамичны
(позволяя вам создавать свои собственные экземпляры на основе этих),
экземпляр Dictionary под названием names используется здесь для
хранения имен точек при помощи самих точек в качестве ключа к их
соответствующему значению имени. Это будет невозможным с общими
экземплярами Object, так как они могут брать в качестве ключей только
имена переменных (строки или числа, но не экземпляры).
|