Как мне представить вектор как перечислимый тип в ActionScript 3? - PullRequest
0 голосов
/ 08 марта 2011

У меня есть член класса в классе ActionScript 3, который выглядит примерно так:

private var m_myvect :Vector.<MyType> = new <MyType>[];

Я выставляю его через геттер, например:

public function get mydata() :Vector.<MyType>

Какойне помогает, когда я использую это так:

for (var o:Object in inst.mydata)
{
    ...
}

... потому что тип o не MyType, а Number, потому что он перечисляет индексы вектора вместоданные.

Как мне представить только данные в векторе таким образом, что:

  • Позволяет мне использовать for(a in b) синтаксис
  • Не раскрываетданные таким способом, который позволяет их изменять?

1 Ответ

3 голосов
/ 08 марта 2011
for( var i:int = 0; i < mydata.length; i++ )
     // this will loop using the index - get your object using mydata[i] - it will be typed

for ( var o:Object (or String) in mydata )
     // this will loop through using the keys - it's more for looping through Objects and Dictionaries

for each( var type:MyType in mydata )
     // this will loop through using the values - what you're looking for

Единственный способ выставить данные, которые мешают его изменению (т.е. добавить / удалить элементы из вектора или изменить данные в MyType), - это сделать это с помощью функций родительского объекта (который содержит вектор).

например

public function changeSomething( index:int, item:* ):void
{
    // make sure the index is in bounds
    if( index < 0 || index >= this.m_myvect.length )
        return;
    this.m_myvect[i].whatever = item;
}
...