代码之家  ›  专栏  ›  技术社区  ›  Yevhenii Popadiuk

使用OptionT将Future[Option[\uu]]与plain Future[\uu]组合时使用更好的语法

  •  0
  • Yevhenii Popadiuk  · 技术社区  · 6 年前

    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 回复  |  直到 6 年前
        1
  •  2
  •   FerranJr    6 年前

    一个小小的改进是做如下事情:

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