使用OptionT

时间:2018-08-22 14:43:44

标签: scala

假设我有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[_]的情况下进行此操作?

1 个答案:

答案 0 :(得分:2)

一个小改进是做类似的事情:

for {
  f <- OptionT(f(a))
  g <- OptionT.liftF(g(b))
} yield (f, g)