在使用 monix.eval.Task 时或 zio.Task , 有没有简单的方法来转换 Option任务到选项的任务?
最佳答案
如果你想要一个纯粹的 ZIO 解决方案,你可以使用 .foreach
和 identity
:
val fx: Option[UIO[Int]] = Option(Task.effectTotal(42))
val res: UIO[Option[Int]] = ZIO.foreach(fx)(identity)
如果您还使用 cats
,则您正在寻找的方法称为 .sequence
。
import cats.implicits.toTraverseOps
import zio.interop.catz._
import zio.{Task, UIO}
val fx: Option[UIO[Int]] = Option(Task.effectTotal(42))
val res: UIO[Option[Int]] = fx.sequence
另一种方法是不可能的,因为需要具体化 Task
才能将其提升到 Option[T]
中。
关于scala - 有没有一种简单的方法可以将 Option[Task[T]] 转换为 Task[Option[T]]?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68210968/