Словарь в Flex / ActionScript - PullRequest
       0

Словарь в Flex / ActionScript

2 голосов
/ 17 декабря 2011

Есть ли способ реализовать словарь с ActionScript в приложении Flex.Например, я хочу сохранить что-то вроде этого.

public var orientation:ArrayCollection = new ArrayCollection([
    {a: new Direction('0','0','b','0')},
    {b: new Direction('a','c','0','h')},
    {c: new Direction('0','b','d','e')},
    {d: new Direction('c','0','0','0')},
    {e: new Direction('f','g','0','c')},
    {f: new Direction('0','0','e','0')},
    {g: new Direction('0','0','0','e')},
    {h: new Direction('0','b','0','i')},
    {i: new Direction('l','h','j','m')},
    {j: new Direction('i','k','0','0')},
    {k: new Direction('0','0','0','j')},
    {l: new Direction('0','0','i','0')},
    {m: new Direction('0','i','0','0')}
]);

, чтобы вместо

orientation.getItemAt(3).north

я мог использовать что-то вроде

orientation.getItemAt('d')north

Без полученияследующая ошибка

Implicit coercion of a value of type String to an unrelated type int.

Спасибо за помощь

1 Ответ

6 голосов
/ 17 декабря 2011

Это довольно странная структура, которую вы используете.Почему бы не использовать Dictionary?

var orientation:Dictionary = new Dictionary();
orientation["a"] = new Direction('0','0','b','0');
orientation["b"] = new Direction('a','c','0','h');
// etc.

Тогда вы можете получить доступ к значению напрямую с помощью ключа - trace(orientation["a"]).

Если вам действительно нужно использовать текущую структуру, вы можетесоздать пользовательскую функцию для доступа к элементам так, как вы хотите.Нечто подобное должно работать (не проверено):

function getItemByKey(var array:ArrayCollection, var key:String):* {
    for (var i:int = 0; i < array.length; i++) {
        var item:* = array[i];
        if (item[key]) return item;
    }
    return null;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...