我是刚开始玩框架,函数编程和Iteratee I/O的新手,所以也许我的问题太过分了,甚至太愚蠢了。

我想将大文本文件作为流上传到第三方,并同时提取有关此文件的元数据(基于其内容,为简化起见,它是一个csv文件)。

我已经编写了两个工作主体解析器:包含编写逻辑的Iteratee[Array[Byte], B]和包含MetaData提取逻辑的Iteratee[Array[Byte], MetaData]。您能否告诉我如何组合这两个解析器以同时处理内容和提取内容

最佳答案

例如,如果您有两个迭代器it1it1,则可以从它们创建一个“压缩”迭代器(以下代码中的zippedIt),它将接收到的所有输入发送给迭代器it1it2。参见Play Iteratee documentation of zip

这是一个例子:

import play.api.libs.iteratee.{Enumerator, Iteratee, Enumeratee}

val e = Enumerator("1", "2", "3")
val it1 = Iteratee.foreach[String](v => println("1: " + v))
val it2 = Iteratee.foreach[String](v => println("2: " + v))
val zippedIt = Enumeratee.zip(it1, it2)
e(zippedIt)

这个小片段的控制台输出是:
1: 1
2: 1
1: 2
2: 2
1: 3
2: 3

关于scala - 用一个枚举器给两个iteratee喂食,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12457239/

10-10 18:51