2012-09-17 2 views
5

나는 프레임 워크, 기능 프로그래밍 및 Iteratee I/O를 재생하는 것은 매우 새롭다. 어쩌면 나의 질문은 주제가 매우 어리석은 것일 수도있다.하나의 열거 자와 두 iteratee 먹이기

대용량 텍스트 파일을 제 3 자에게 스트림으로 업로드하고 동시에이 파일에 대한 메타 데이터를 추출하고 싶습니다 (내용을 기반으로 간단히 CSV 파일이라고 말했습니다).

필자는 이미 쓰기 논리를 포함하는 Iteratee[Array[Byte], B]과 MetaData 추출 논리를 포함하는 Iteratee[Array[Byte], MetaData] 두 가지 실제 본문 파서를 작성했습니다. 당신은에서 (두 iteratees, it1it1가있는 경우

답변

4

는 말하자면, 당신이 그들로부터 iteratee를 "압축"만들 수있는 쓰기와 같은 시간에 추출 내용을 처리하기 위해이 두 파서를 결합하는 방법을 zippedIt을 말해 주 시겠어요 아래의 코드)는 두 iteratees, 즉 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 
여기

는 예제
관련 문제