5

私はフレームワーク、関数型プログラミング、および Iteratee I/O をプレイするのに非常に慣れていないため、私の質問はトピックから外れているか、愚かでさえあるかもしれません。

大きなテキスト ファイルをストリームとしてサード パーティにアップロードし、同時にこのファイルに関するメタ データを抽出したいと考えています (その内容に基づいて、簡略化して csv ファイルと言いました)。

私はすでに 2 つの動作するボディ パーサーIteratee[Array[Byte], B]を作成しました。書き込みロジックIteratee[Array[Byte], MetaData]を含むものと、MetaData 抽出ロジックを含むものです。これら 2 つのパーサーを組み合わせて、コンテンツの書き込みと抽出を同時に処理する方法を教えてください。

4

1 に答える 1

4

2 つの iteratee がある場合it1it1たとえば、それらから "圧縮された" iteratee を作成できます (以下zippedItのコードで) 。のPlay Iteratee ドキュメントを参照してください。it1it2zip

次に例を示します。

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 に答える