2

试图在播放 2.0.4 中了解 Enumerators - 我想将一个 Enumerator 与另一个 Enumerator 交错,但只要第一个 Enumerator 的长度(不包括)。所以:

Enumerator("hello", "world") -> "hello" ", " "world"
Enumerator("one", "two", "three") -> "one" ", " "two" ", " "three"

内置交错包括从第一个枚举器的末尾到第二个枚举器的末尾。

val commas : Enumerator[String] = {
  Enumerator(", ", ", ", ", ")
}
val words : Enumerator[String] = {
  Enumerator("hello", "world!")
}
Ok.stream(words interleave commas andThen Enumerator.eof)

产生“你好,世界,”而不是“你好,世界”

非常感谢帮助!

4

1 回答 1

0

Enumerators通常在消耗之前处理,因此在您的场景中,结果是预期的,因为一旦一个 Enumerator 完成,另一个 Enumerator 的其余部分就会被处理。

您似乎需要的是Iteratee相应地处理输出和过滤器。您可以在文档中找到一些示例。

另一种可能的方法是使用Enumeratee(参见文档)来转换交织的输出。

于 2012-12-04T15:03:26.873 回答