मेरे पास Stream[A]
और एक फ़ंक्शन zeroOrMoreB(value: A): Seq[B]
है, जिसने A
शून्य या अधिक B
दिया है। इन दो टुकड़ों से, मैं Stream[B]
कैसे बनाऊं?
मैं Stream[Stream[B]]
प्राप्त कर सकता हूं (नीचे देखें), लेकिन मैं यह नहीं समझ सकता कि इसे कैसे समतल किया जाए।
stream <- ZStream
.fromIterable(vectorOfAs)
.map(zeroOrMoreB)
0
RandomBits
28 अक्टूबर 2020, 20:10
2 जवाब
सबसे बढ़िया उत्तर
जैसा कि मैं हमेशा कहता हूं, स्कैलाडोक आपका मित्र है।
आप mapConcat
का उपयोग कर सकते हैं
val stream = ZStream.fromIterable(vectorOfAs).mapConcat(zeroOrMoreB)
अब यदि zeroOrMoreB
वास्तव में Seq के बजाय एक ZStream देता है, तो आप flatMap
का उपयोग करते हैं
val stream = ZStream.fromIterable(vectorOfAs).flatMap(zeroOrMoreB)
अंत में, यदि आपको वाक्य रचना के लिए पसंद है तो आप ऐसा कर सकते हैं
val stream = for {
a <- ZStream.fromIterable(vectorOfAs)
b <- ZStream.fromIterable(zeroOrMoreB(a))
} yield b
3
Luis Miguel Mejía Suárez
28 अक्टूबर 2020, 17:18
मैं स्पष्ट रूप से सीधे नहीं सोच रहा था - .flatMap
चाल करता है।
stream <- ZStream
.fromIterable(vectorOfAs)
.flatMap(a => zeroOrMoreB(a))
0
RandomBits
28 अक्टूबर 2020, 17:18