Scala 如何将元素从枚举器[A]分组到枚举器[Seq[A]]?

Scala 如何将元素从枚举器[A]分组到枚举器[Seq[A]]?,scala,playframework-2.0,Scala,Playframework 2.0,我有来自枚举器[A]的元素,希望对这些元素进行分组/批处理以获得枚举器[Seq[A]]。下面是我编写的代码,它将A分组到Seq[A],但不生成枚举器[Seq[A]] 在一些组合器的帮助下,这可以非常直接地完成: import play.api.libs.iteratee._ def batch[A](n: Int): Enumeratee[A, List[A]] = Enumeratee.grouped( Enumeratee.take(n) &>> Iteratee.

我有来自枚举器[A]的元素,希望对这些元素进行分组/批处理以获得枚举器[Seq[A]]。下面是我编写的代码,它将A分组到Seq[A],但不生成枚举器[Seq[A]]


在一些组合器的帮助下,这可以非常直接地完成:

import play.api.libs.iteratee._

def batch[A](n: Int): Enumeratee[A, List[A]] = Enumeratee.grouped(
  Enumeratee.take(n) &>> Iteratee.getChunks[A]
)
然后,我们可以使用此枚举将任何枚举数转换为列表的新枚举数:

val intsEnumerator = Enumerator(1 to 40: _*)

intsEnumerator.through(batch(7)).run(Iteratee.foreach(println))
这将打印以下内容:

List(1, 2, 3, 4, 5, 6, 7)
List(8, 9, 10, 11, 12, 13, 14)
List(15, 16, 17, 18, 19, 20, 21)
List(22, 23, 24, 25, 26, 27, 28)
List(29, 30, 31, 32, 33, 34, 35)
List(36, 37, 38, 39, 40)

正如预期的那样。

在一些组合器的帮助下,这可以非常直接地完成:

import play.api.libs.iteratee._

def batch[A](n: Int): Enumeratee[A, List[A]] = Enumeratee.grouped(
  Enumeratee.take(n) &>> Iteratee.getChunks[A]
)
然后,我们可以使用此枚举将任何枚举数转换为列表的新枚举数:

val intsEnumerator = Enumerator(1 to 40: _*)

intsEnumerator.through(batch(7)).run(Iteratee.foreach(println))
这将打印以下内容:

List(1, 2, 3, 4, 5, 6, 7)
List(8, 9, 10, 11, 12, 13, 14)
List(15, 16, 17, 18, 19, 20, 21)
List(22, 23, 24, 25, 26, 27, 28)
List(29, 30, 31, 32, 33, 34, 35)
List(36, 37, 38, 39, 40)
正如所料