我与一些嵌套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
类型。