作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我对框架、函数式编程和 Iteratee I/O 还很陌生,所以也许我的问题很脱离主题,甚至很愚蠢。
我想将大文本文件作为流上传到第三方,同时提取有关该文件的元数据(根据其内容,简单地说它是一个 csv 文件)。
我已经编写了两个工作主体解析器:Iteratee[Array[Byte], B]
,其中包含写入逻辑和 Iteratee[Array[Byte], MetaData]
code> 包含元数据提取逻辑。您能否告诉我如何结合这两个解析器来同时处理写入和提取内容
最佳答案
如果您有两个迭代器,it1
和 it1
,例如,您可以从它们创建一个“压缩”迭代器(在代码如下),它将把收到的任何输入发送给两个迭代器,it1
和 it2
。请参阅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 - 用一个枚举器提供两个迭代器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12457239/
我是一名优秀的程序员,十分优秀!