Хорошо играть с «для каждого» в ActionScript? - PullRequest
2 голосов
/ 24 сентября 2010

Допустим, у меня есть класс ActionScript: MyClass и в этом классе есть данные. Теперь, допустим, я хочу перебрать эти данные, используя «для каждого»:

var myData:MyClass = new MyClass();
myData.Populate(fromSource);

for each(var item in myData) {
  DoSomethingWith(item);
}

Конечно, это ничего не делает, потому что MyClass - это пользовательский класс, и я пока ничего особенного для него не сделал.

Что мне нужно сделать для MyClass, чтобы он хорошо сочетался с "для каждого"? Могу ли я передать ему итератор или перечислитель или что-то еще?

Ответы [ 3 ]

3 голосов
/ 24 сентября 2010

Я считаю, что вам нужно расширить прокси класс и реализовать nextValue(index:int). Используется for each.

2 голосов
/ 24 сентября 2010

Хорошо, я понял это.

@ alxx помог мне добраться до ответа. Вот полный ответ:

public class MyClass extends Proxy
{
    override flash_proxy function nextNameIndex (index:int):int {
        // This is the command to move to the next item or start over (index == 0)
        // return an incremented index when there is data
        // return 0 when you are done.
    }

    override flash_proxy function nextValue(index:int):* {
        // This is the command to get the data
        // The index that is passed in is the index returned in nextNameIndex
    }
}
0 голосов
/ 24 сентября 2010

Вам следует зайти на страницу Adobe Liveocs на для каждого ... в . Там есть ваш ответ.

" [для каждого ... in] Перебирает элементы коллекции и выполняет оператор для каждого элемента. Представленный как часть языковых расширений E4X, оператор for each..in может использоваться не только для объектов XML, но также для объектов и массивов. Оператор for each..in выполняет итерацию только через динамические свойства объекта, а не фиксированные свойства. Фиксированное свойство - это свойство, которое определяется как часть определения класса. Чтобы использовать оператор for each..in с экземпляром пользовательского класса, необходимо объявить класс с динамическим атрибутом."

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