Задать вопрос

В чем практическая польза итераторов в JS?

До итераторов как то руки не доходили. И вот вчера решил разобраться с ними. Идею понял. Как реализовывать понял. Но вот в чем их практическая польза Symbol.iterator?
У объектов и массивов есть уже готовые методы. У новых структур Map и Set уже есть итераторы. В чем собственно говоря их практическая польза? В гибкости?

С их помощью можно конечно добавить итератор объекту, или своему собственному хэшу, но есть же Map, Set.
Короче, штука неплохая. но есть вопросы по целесообразности ее использования. Может кто пояснить на примере?
  • Вопрос задан
  • 1326 просмотров
Подписаться 10 Простой 8 комментариев
Решения вопроса 1
search
@search
мама говорит что я особенный
Полезность итераторов в том что это открытый интерфейс для любой структуры данных. Как вы уже поняли, любой класс/объект в JS может обладать интерфейсом итератора. Идея итератора в том чтобы скрыть внутреннее представление структуры данных от потребителя этих данных. Например, если вы работаете с какими-либо замысловатыми структурами данных, типа бинарных деревьев. Пользователю совсем не обязательно знать как ваш класс/объект хранит бинарное дерево. Пользователь просто его получает и проходит по всем его элементам в цикле. В дальнейшем, вы можете, при необходимости, заменить одну структуру данных на другую, не меняя самого пользователя. Например, вы можете заменить бинарное дерево на б-дерево прозрачно для самого пользователя (пользователь не будет знать что вы подменили структуры, он по прежнему получает что-то что можно проитерировать и ему этого достаточно).

Для того чтоб глубже понять суть вопроса, можно погуглить про инкапсуляцию и SOLID (в вашем случае, принцип Open/closed).
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@lega
> но есть же Map, Set.

Это совсем не про это, итераторы позволяют частично выполнять ф-ии, множественный вход-выход, потоковая передача данных и т.д.

Для сравнения попробуйте сделать функцию вычисления бесконечного фибоначи на итераторах и без, и сравните время выполнения, для получения результата (хотя бы первых N элементов).
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы