我希望能够创建一个枚举器,无限重复一系列元素,但我在想如何实现时遇到了问题。当我创建一个递归枚举器时,尝试引用它时似乎会导致堆栈溢出。例如,为了创建一个重复A、B、C、D、A、B、C、D、A、B、C、D、A...的枚举器,我希望使用以下内容:
scala> lazy val e1: Enumerator[String] = Enumerator("a","b","c","d") andThen e1
e1: play.api.libs.iteratee.Enumerator[String] = <lazy>
但是,当我试图使用它时,会出现堆栈溢出的问题:
scala> e1 through Enumeratee.take(1) apply Iteratee.foreach(println(_)
java.lang.StackOverflowError
at .e1$lzycompute(<console>:11)
at .e1(<console>:11)
at .e1$lzycompute(<console>:11)
at .e1(<console>:11)
at .e1$lzycompute(<console>:11)
at .e1(<console>:11)
continually
的答案,看看是否可以将其应用到枚举器中:https://dev59.com/XnA75IYBdhLWcg3wg5Vh - cmbaxterEnumerator.repeat(()).flatMap(_ => elems)
怎么样?其中elems
是您的元素枚举器。 - Travis Brown