4

枚举器和迭代器有什么区别?根据我的理解,这在 JavaEnumerator中并不是一个花哨的别名。enum相反,它似乎是一种类似于Iterator. 那么有人能够比较和对比EnumeratorIteratorPlay另外,我在as中看到了一个用法

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

编辑:

我倾向于认为这Enumerator为我们提供了实际的数据块,而Iterator为我们提供了指向已经分块的数据的指针,例如列表。但我不相信情况确实如此。

4

1 回答 1

9

Enumerator是一个Play 类,而不是 Java 或 Scala 类。

它是IterateePlay 提供的 I/O 处理的一部分。Iteratees 是一个有趣的野兽——一方面,它将数据“推送”到处理程序,而不是依赖处理程序来提取数据,因此具有更好的性能。另一方面,允许处理程序控制何时应该停止流。最后,可以组合迭代器,以便不同的迭代器负责输入的不同部分(例如,一个接收 HTTP 标头,另一个接收其正文)以及将它们链接起来,以便低级迭代器可以进行预处理,即然后喂给更高级别的迭代器。

上面有很多素材,自己动手吧。

它与迭代器或枚举没有任何关系。

于 2013-02-22T20:34:38.670 回答