在使用monix.eval.Task或zio.Task时,是否有一种简单的方法可以将 Task 的 Option 转换为Option的 Task?
问问题
158 次
1 回答
3
如果您想要一个纯 ZIO 解决方案,您可以使用.foreach
with 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]
.
于 2021-07-01T14:29:45.400 回答