6.7. Итераторы

С Haxe очень легко определить пользовательские итераторы и итерируемые типы данных. Эти понятия представлены типами  Iterator и   Iterable <T> соответственно:

Любой класс, который структурно согласуется с одним из этих типов, может быть проитерирован с помощью цикла for-loop. То есть, если класс определяет методы   hasNext и   next с соответствующими возвращаемыми типами, он считается итератором, а если он определяет итератор метода, возвращающий   Iterator <T>, он считается итерируемым типом.

Выполнение кода можно посмотреть здесь

Тип   BoundsArrayIterator<T> в данном примере является итератором. Он реализует методы hasNext, проверяющий достигнут ли конец диапазона, и   next, возвращающий объект из массива. Данный итератор используется в классе   BoundsArrayWrap<T> в методе   iterator, который и определяет данный класс как итерируемый.

 

Ссылка на источник

Дарья Пиндус
Дарья Пиндус недавно публиковал (посмотреть все)

4 thoughts on “6.7. Итераторы

  1. Было бы удобно, если бы была ссылка на http://try.haxe.org/ , где можно посмотреть на работу данного кода.
    После долгого и тяжелого копирования, я запустил код, и он мне ничего не вывел, хотя предполагалось, что он выведет [‘very’, ‘important’, ‘text’] или [‘very’, ‘important’], тут как вам больше нравится. Тут я тестировал http://try.haxe.org/#f1105 .

    Мне кажется, что было бы приятнее читать код, если бы между названием переменной и её типом были пробелы, что-то вроде этого «var a : Array», но это лишь моё мнение.

    • Добавлю ещё от себя «пожеланий»:
      — Нет ссылки на статью, которая послужила источником информации.
      — Если термины или фрагменты кода (например, переменные или типы данных) встречаются в тексте, то их лучше тоже оформлять при помощи crayon. Тогда они будут выглядеть также как в коде. Для примера я пределал одно из таких мест — Iterator<T>.
      — Вы выбросили из текста все гиперссылки. Верните их, пожалуйста.
      — Мне кажется, что «structurally unifies» лучше перевести как «структурно согласуется». А еще лучше посмотреть какой-нибудь учебник программирования, чтобы отыскать схожий термин.

Добавить комментарий