我與一些嵌套Stream
s工作,並想與他們使用的理解語法:與工作流包裹在選項
def handleNestedStream(as : Stream[A]) : Stream[(A, B)] = {
a <- as
b <- makeBs(a)
} yield (a, b)
然而,makeBs
函數返回一個Option[Stream[B]]
。我想Option
自動解包。另外,如果makeBs
失敗,我希望整個函數返回None
。所以新功能看起來像這樣:
def makeBs(a : A) : Option[Stream[B]] = { ... }
def handleNestedStream(as : Stream[A]) : Option[Stream[(A, B)]] = {
a <- as
b <- makeBs(a)
} yield (a, b)
唯一的變化是函數的類型。
我該如何做到這樣?罐頭StreamingT
可以從scalaz或StreamT
幫忙嗎?
某些類型是靈活的。 makeBs
可以返回Stream[Option[B]]
而不是Option[Stream[B]]
,如果這樣做會使事情變得更簡單。
我需要使用scala標準lib Stream
類型。