尝试掌握 ZIO
Trying to get to grips with ZIO
我只是想学习 ZIO,一切都很顺利,直到我得到一个 Seq[URIO[Any, Fiber.Runtime[Throwable, Unit]]]
- 我真的不知道该怎么做 - None 我的光纤是 运行ning,可能是因为我需要评估每个 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
我只是想学习 ZIO,一切都很顺利,直到我得到一个 Seq[URIO[Any, Fiber.Runtime[Throwable, Unit]]]
- 我真的不知道该怎么做 - None 我的光纤是 运行ning,可能是因为我需要评估每个 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