试图掌握齐奥



我只是想学习ZIO和一切都很好枪,直到我结束了一个Seq[URIO[Any, Fiber.Runtime[Throwable, Unit]]]-我真的不知道该怎么做-我的纤维都没有运行,可能是因为我需要评估每个URIO,但如果是这样的话,我如何在zio.App中做到这一点?我试过映射序列,但后来我似乎一直结束与Seq[Nothing]

我试过包装Seq的效果,但这似乎没有帮助我。我看过ZIO网站上的例子,但他们没有处理纤维列表,所以现在我迷路了…

编辑好的-我想我的问题是:我如何运行一个列表的效果?

package testmesomemore
import zio._
import zio.console._
import zio.internal.Platform
import java.io.IOException
case class testme(
s: String,
n: Int,
l: String) {
def runme() = UIO.effectTotal {
println(s"${s}${l}")
}
}
object mytest extends zio.App {
override val platform: Platform = zio.Runtime.default.platform.withReportFailure(_ => ())
def run(args: List[String]) = {
val testlist: Seq[testme] = List[testme](testme("Hi there", 1, "."), testme("This is a test", 3, "..."))
val result = for {
// r <- testlist.map(d => d.runme().forkDaemon) // How to run a list of effects?
a <- testme("Hi there", 1, ".").runme().forkDaemon
b <- testme("This is a test", 3, "...").runme().forkDaemon
} yield()
result.exitCode
}
}

我可以单独分叉效果,但如果我有一个列表,我怎么分叉它们呢?

我想我已经看这个太久了,现在什么都没有意义…抱歉,我是不是有点糊涂,没看清什么?

除非您有管理纤维的特殊需要,否则请使用Zio。foreach或ZIO。foreachPar表示并行,像这样

ZIO.foreachPar(testlist)(_.runme()).exitCode

相关内容

  • 没有找到相关文章

最新更新