【发布时间】:2015-09-04 13:32:29
【问题描述】:
我很难理解 Iteratee/Enumeratee/Enumerator 的概念。看起来我了解如何创建自定义 Iteratee - 有一些很好的例子,如 that。
现在我要编写我的自定义 Enumeratee。我开始为此挖掘代码,那里没有那么多 cmets,而是很多 fold()、fold0()、foldM() , joinI()。我知道 Enumeratee 确实是由 Iteratee 和酱汁制成的东西,但我仍然无法理解自己编写的概念。因此,如果有人会帮助我完成该示例任务,它将给出正确的方向。让我们考虑这样的例子:
val stringEnumerator = Enumerator("abc", "def,ghi", "jkl,mnopqrstuvwxyz")
val myEnumeratee: Enumeratee[String, Int] = ... // ???
val lengthEnumerator: Enumerator[Int] = stringEnumerator through myEnumeratee // should be equal to Enumerator(6, 6, 14)
myEnumeratee 应该通过用逗号分割给定的字符流并返回每个块的长度来重新采样流(“abc”+“def”长度为 6,“ghi”+“jkl”长度为 6 和很快)。怎么写?
附: 我写了一个 Iteratee 来计算每个块的长度并最终返回 List[Int]。也许会有所帮助。
【问题讨论】:
标签: scala playframework-2.0 iterate