5

我是玩框架、函数式编程和 Iteratee I/O 的新手,所以也许我的问题非常离题甚至愚蠢。

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

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

4

1 回答 1

4

如果您有两个迭代器,it1并且it1,例如,您可以从它们(在下面的代码中)创建一个“压缩”迭代zippedIt器,它将接收到的任何输入发送给两个迭代器,it1并且it2. 请参阅 的Play Iteratee 文档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
于 2013-02-18T00:00:05.497 回答