2012-09-17 10 views
5

के साथ दो iteratee खिला रहा है मैं ढांचे, कार्यात्मक प्रोग्रामिंग और Iteratee I/O खेलने के लिए बहुत नया हूँ, तो शायद मेरा प्रश्न विषय या यहां तक ​​कि बेवकूफ से बाहर है।एक दोहराव

मैं बड़ी टेक्स्ट फ़ाइलों को किसी तृतीय पक्ष को स्ट्रीम के रूप में अपलोड करना चाहता हूं और साथ ही इस फ़ाइल के बारे में मेटा डेटा निकालना चाहता हूं (इसकी सामग्री के आधार पर, यह सरल बनाने के लिए कि यह एक सीएसवी फ़ाइल है)।

मैंने पहले से ही दो कार्यरत शरीर पार्सर्स लिखा है: Iteratee[Array[Byte], B] जिसमें लेखन तर्क और Iteratee[Array[Byte], MetaData] शामिल है जिसमें मेटाडेटा निकालने वाला तर्क शामिल है। क्या आप मुझे बता सकते हैं में कैसे लेखन और एक ही समय में निकालने सामग्री को संभालने के

उत्तर

4

आप दो iteratees, it1 और it1, है, तो कहते हैं, आपके द्वारा बनाए कर सकते हैं एक उन लोगों से "ज़िप किया गया" iteratee इन दो पारसर्स गठबंधन करने के लिए (zippedIt नीचे दिया गया कोड) जो इटेटेट्स, 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 

यहाँ एक उदाहरण है

संबंधित मुद्दे