2012-09-17 7 views
5

Soy muy nuevo para jugar framework, programación funcional e Iteratee I/O, así que tal vez mi pregunta esté muy fuera de tema o incluso estúpida.alimentando dos iteratee con un enumerador

Me gustaría cargar grandes archivos de texto como transmisión a un tercero y al mismo tiempo extraer los metadatos sobre este archivo (en base a su contenido, para simplificar dicho es un archivo csv).

ya he escrito dos analizadores cuerpo de trabajo: Iteratee[Array[Byte], B] que contiene la lógica de escritura y un Iteratee[Array[Byte], MetaData] que contiene la lógica de Metadatos extraer. Podría, por favor dime cómo combinar estos dos analizadores para manejar la escritura y el contenido de la extracción en el mismo tiempo

Respuesta

4

Si tiene dos iteratees, it1 y it1, por ejemplo, puede creado una "cremallera" iteratee de ellos (zippedIt en el código a continuación) que enviará cualquier entrada que reciba a las dos iteraciones, it1 y it2. Vea el Play Iteratee documentation of zip.

He aquí un ejemplo:

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) 

La salida de la consola de este pequeño fragmento es:

1: 1 
2: 1 
1: 2 
2: 2 
1: 3 
2: 3 
Cuestiones relacionadas