【问题标题】:feeding two iteratee with one enumerator用一个枚举器喂两个迭代器
【发布时间】:2015-11-19 03:02:45
【问题描述】:

我对框架、函数式编程和 Iteratee I/O 很陌生,所以我的问题可能非常离题甚至愚蠢。

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

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

【问题讨论】:

    标签: scala playframework iterate


    【解决方案1】:

    如果你有两个迭代器,it1it1,你可以从它们创建一个“压缩”迭代器(下面代码中的zippedIt),它将接收到的任何输入发送给两个迭代器,@ 987654325@ 和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)
    

    这个小sn-p的控制台输出是:

    1: 1
    2: 1
    1: 2
    2: 2
    1: 3
    2: 3
    

    【讨论】:

      猜你喜欢
      • 2016-12-16
      • 1970-01-01
      • 1970-01-01
      • 2012-06-08
      • 1970-01-01
      • 2021-10-05
      • 2010-11-25
      • 2012-07-17
      相关资源
      最近更新 更多