我正在使用一些嵌套Stream
的 s 并希望对它们使用 for comprehension 语法:
def handleNestedStream(as : Stream[A]) : Stream[(A, B)] = {
a <- as
b <- makeBs(a)
} yield (a, b)
但是,该makeBs
函数返回一个Option[Stream[B]]
. 我希望Option
自动解包。另外,None
如果makeBs
失败,我希望整个函数返回。所以新函数看起来像这样:
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
从猫或StreamT
斯卡拉兹那里得到帮助吗?
有些类型是灵活的。makeBs
可以返回Stream[Option[B]]
,而不是Option[Stream[B]]
让事情变得更简单。
我需要使用 scala 标准库Stream
类型。