在使用monix.eval.Task或zio.Task时,是否有一种简单的方法将Option of Task转换为Task of Option?
如果你想使用纯ZIO解决方案,可以使用.foreach
和identity
:
val fx: Option[UIO[Int]] = Option(Task.effectTotal(42))
val res: UIO[Option[Int]] = ZIO.foreach(fx)(identity)
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
Traversable
。这个特质恰好是所需的。 - Mark Saving