Доступ к объектным методам, указанным в качестве значения в словаре (AS3) - PullRequest
0 голосов
/ 17 ноября 2011

Итак, я пишу программу, которая использует Dictionary для хранения объектов. Например

var dictionary:Dictionary=new Dictionary();
var myObject = new myObject(var1, var2, var3);

dicionary["key"]=myObject;

, где var1, var2 и var3 - это просто средства присвоения значений переменным в myObject.

У меня вопрос, могу ли я получить доступ к значениям или функциям, которые есть в myObject? В классе myObject у меня есть некоторые методы получения и установки. Могу ли я использовать метод получения, например, значение var1.

dictionary["keys"].getVar1()?

такие вещи.

1 Ответ

2 голосов
/ 17 ноября 2011

Конечно, так же, как работает

var obj:MyObject = dicionary["key"];
trace( obj.getVar1() );

, вы можете сделать это без переменной, в одной строке.

trace( dicionary["key"].getVar1() );

Просто остерегайтесь типа, вы получите ошибкиесли

  • ключ не существует
  • значение ключа null
  • значение ключа другого типа

Так что, возможно, было бы неплохо проверить эти вещи, прежде чем обращаться к каким-либо методам напрямую.


Однако, если вы используете строки, обычное решение Object является обычным решением.Он работает как ассоциативный массив:

var dictObj:Object = [];
dictObj["key"] = myObject;

С другой стороны, Dictionary используется, когда вам нужны не строковые объекты в качестве ключей.

var dictionary:Dictionary= new Dictionary();
var key:MyKeyObject = new MyKeyObject();
dictionary[key] = myObject;

Последнее замечание: классимена обычно пишутся в CamelCase

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