gpt4 book ai didi

scala - 组成 future 和期权

转载 作者:行者123 更新时间:2023-12-02 08:38:01 29 4
gpt4 key购买 nike

我有四种类型ABCD,初始值x Future[Option[A]] 和三个函数:f1: A => Option[B] , f2: B => Future[Option[C]]f3: C => D

我如何编写一个以 x 开头的 for 理解,它会产生一个 Future[Option[D]] 类型的值会是三个函数的“组合”吗?

最佳答案

为此,您可以使用 monad 转换器(来自 Scalaz):

import scalaz.OptionT
import scalaz.std.option._
import scalaz.syntax.monad._
val result: Future[Option[D]] = (for {
a <- OptionT(x)
b <- OptionT(f1(a).point[Future])
c <- OptionT(f2(b))
} yield f3(c)).run

Future 需要一个 monad 实例; scalaz-contrib 中有一个。

关于scala - 组成 future 和期权,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19307703/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com