假设我有f(a: Int): Future[Option[T]]
和g(b: Int): Future[K]
,我可以将它们像下面这样与猫的OptionT
结合起来:
for {
f <- OptionT(f(a))
g <- OptionT(g(b).map(Option.apply)
} yield (f, g)
有没有更好的方法可以在不映射每个Future[_]
的情况下进行此操作?
答案 0 :(得分:2)
一个小改进是做类似的事情:
for {
f <- OptionT(f(a))
g <- OptionT.liftF(g(b))
} yield (f, g)