- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这可能是一个愚蠢的问题,但从 ZIO 开始,我无法将 Seq[ZIO]
转换为 ZIO[Seq]
:
def translate(keys: Seq[String], locales: Seq[Locale]):RIO[Translator, Seq[Translation]] = {
for {
service <- ZIO.environment[Translator]
} yield {
// service.translate produce a zio.Task[Translation]
keys.map(k => service.translate(k, locales)
}
}
Required: RIO[Translator, Seq[Translation]]
Found : ZIO[Translator, Nothing, Seq[zio.Task[Translation]]
我尝试了 flatMap
、flatten
、collectAll
和 merge
但我无法得到预期的结果与任何人。
如何将 Seq[ZIO[_, _, B]]
转换为 ZIO[_, _, Seq[B]]
?
谢谢
编辑:似乎 ZIO.foreach
是最好的选择,但是由于 for 理解,我仍然将它包裹在另一个 ZIO 中。
最佳答案
因为除了最后一行是 map
之外,for 循环转换为 flatMap
,所以您要添加 foreach
调用 在 for循环中。
def translate(keys: Seq[String], locales: Seq[Locale]): RIO[Translator, Seq[Translation]] = {
for {
translator <- ZIO.environment[Translator]
translations <- ZIO.foreach(keys)(translator.translate(_, locales))
} yield translations
}
关于scala - Zio,将 Seq[ZIO] 转换为 ZIO[Seq],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67301065/
这可能是一个愚蠢的问题,但从 ZIO 开始,我无法将 Seq[ZIO] 转换为 ZIO[Seq]: def translate(keys: Seq[String], locales: Seq[Loca
我创建了我的服务的两个版本。第一个使用 Futures,另一个使用 ZIO 作为效果。 我有一个使用 Future 作为结果效果的简单方法: def get(id: String)(implicit
我有下一个代码: import zio._ import scala.concurrent.Future case class AppError(description: String) extend
我有下一个代码: import zio._ import scala.concurrent.Future case class AppError(description: String) extend
我有一个返回一些 ZIO 的方法: def method(...): ZIO[Any with clock, SomeError, Unit] 调用此方法返回Task[Unit]: def other
(希望)关于 Scalaz Zio 的简单问题。 我有一些重构为 Zio 的旧代码。我希望该代码的一条路径保持原样: 同步 阻塞 在当前线程上(这是一个硬性要求) 我如何运行 IO这样它的行为就像旧的
我正在使用 ZIO:https://github.com/zio/zio 在我的 build.sbt : "dev.zio" %% "zio" % "1.0.0-RC9" 无论我尝试过什么,每次我需要
我想为 abort-early-in-a-fold 添加一个答案对于ZIO。 所以我采用了猫的解决方案:cats solution def sumEvenNumbers(nums: Stream[In
我有一堆 IO,所有这些都可能成功或失败: val result: Seq[IO[MyFailure, MySuccess]] = ... 我需要总结结果,以便我可以一起检查所有失败和所有成功: ca
我在 Scala 中有一个类有四个参数,其中 2 个是变量,我想在 Zio 中使用 Ref 数据类型来控制对这些变量的访问,这是我的代码: import zio._ class Rectangle(v
我找不到有关如何使用 ZIO 测试忽略套件或测试的任何信息。 无论是在示例中还是在文档中( https://zio.dev/docs/usecases/usecases_testing ) 有一个ig
我知道ZIO是维护自己的堆栈,即zio.internal.FiberContext#stack ,它保护递归函数,如 def getNameFromUser(askForName: UIO[Strin
我想按顺序运行两个集成测试。如何在 ZIO Test 中实现这一点? 这是套房: suite("Undeploy a Package")( testM("There is a Package"
scala.js 是否与 scala ZIO 一起使用? 我想在 scala.js 中使用 scala ZIO 我只知道如何在普通应用程序中使用 scala ZIO 有谁知道如何在 scala.js
我有几个 Booleans我想测试,比如 assert(g8Exists, equalTo(true)) && assert(projectExists, equalTo(true)) && asse
我想在 ZIO Fibers 上使用组合器 orElse。 从文档: 如果第一个纤维成功,则合成的纤维将成功,其结果;否则,组成的光纤将以第二条光纤的退出值完成(无论成功或失败)。 import zi
我有以下 ZIO 程序,其中包含两个永久运行的进程: for { .. numberProvider <- numberProvider(queue).fork //
我试过了 assert(anOption)(contains("x")) 但这仅适用于 Iterables,例如 List 或 Seq。 最佳答案 assert(anOption)(isSome(eq
我有以下功能,我想测试: def people(id: Int): RIO[R, People] 如果有一个人,此函数将返回 id , 分别如果没有,则失败,例如: IO.fail(ServiceEx
我有一个严重的副作用函数(想想数据库调用),我想将其用作惰性值,这样它只会在第一次使用时被调用(如果从未使用过则根本不会被调用)。 我如何使用 ZIO 做到这一点? 如果我的程序看起来像这样,函数只被
我是一名优秀的程序员,十分优秀!