Перечислитель против Итератора в Scala и Java

В чем разница между перечислителем и итератором? В моем понимании Enumerator это не причудливый псевдоним для enum на Яве. Скорее, это похоже на метод обхода, похожий на Iterator, Так что каждый может сравнить и противопоставить Enumerator а также Iterator? Кроме того, я вижу использование в Play как

val data = getDataStream
val dataContent: Enumerator[Array[Byte]] = Enumerator.fromStream(data)

РЕДАКТИРОВАТЬ:

Я склонен думать, что Enumerator дает нам фактические порции данных, тогда как Iterator дает нам указатели на данные, которые уже разбиты на части, такие как список. Но я не уверен, что это так.

1 ответ

Enumerator класс Play, а не класс Java или Scala.

Это частьIterateeОбработка ввода / вывода, которую обеспечивает Play. Итерации - интересный зверь - с одной стороны, он "выталкивает" данные в обработчик, вместо того чтобы полагаться на обработчик для извлечения данных, и, следовательно, имеет лучшую производительность. С другой стороны, это позволяет обработчику контролировать, когда поток должен быть остановлен. Наконец, можно составить итераторов, чтобы разные итераторы отвечали за разные части ввода (скажем, один для получения заголовков HTTP, другой для получения его тела), а также связывать их так, чтобы итераторы низкого уровня могли выполнять предварительную обработку, которая затем подается к итераторам более высокого уровня.

На них много материала, воспользуйтесь им.

Это никак не связано с итераторами или перечислениями.

Другие вопросы по тегам