问题标签 [zio]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
scala - 对象扩展同名特征的模式的目的 - 对象 Live 扩展 Live
我正在尝试ZIO。
我不明白为什么Live
添加 as Trait
,然后object
提供 an ,例如:
这种模式出现在不同的地方,例如zio.console.Console
。
是否有原因,或者是否存在有意义的情况?
scala - Scala 中是否可以在包中包含函数/方法?{}
我目前正在关注 Wiem Zine 小姐的文章(特别是关于 ZIO):让您的程序可测试
但我无法通过
我读过alvin alexander 的页面,但都是关于范围界定的。
会不会是一个
而不是package console {}
?
还是那是scala 3的东西?还是我做错了什么?
scala - How to share a ZIO Queue between ZIO Tasks via the ZIO Environment
I'm somewhat new to Scala and ZIO and have run into something of an odd puzzle.
I would like to setup a ZIO Environment containing a ZIO Queue and later
have different ZIO Tasks offer
and take
from this shared Queue.
I tried defining my environment like this
and accessing the queue from separate tasks like this
but in my test I observe each of my separate tasks is given a separate Queue instance.
Looking at the signature for unbounded
I observe it doesn't immediately return a Queue but rather returns an effect which returns a queue so while the observed behavior makes sense it isn't at all what I was hoping for and I don't see a clear way to get the behavior I would like.
Would appreciate any suggestions as to how to achieve my goal of setting up different tasks communicating via a shared queue stored in the Environment.
For reference here is my code and output.
sample execution
(hangs here - notice env object is the same but queue objects are different so second task is stuck)
/tmp/env-q/test.scala
Here is my complete test which is based on example from slide 37 of https://www.slideshare.net/jdegoes/zio-queue
/tmp/env-q/build.sbt
Here is the build.sbt I used
scala - ZIO:为什么我会收到“产生了未经检查的错误”。
我对ZIO中的异常处理有误解。我遵循了ZIO-Documentation。
在测试类中,我运行以下代码:
我想用这个fold
函数我可以处理这个异常,但它甚至没有到达那里。我在控制台上得到这个异常:
我想念什么?
这是一个最小的例子:
这是整个代码:SwapiTest.scala
scala - ZIO ZSchedule 的初始延迟
我试图制定的时间表必须:
- 在指定延迟后开始
- 以固定速率重复
- 如果达到给定的时间限制或遇到终止状态则终止
所以我所拥有的是(2.)和(3.):
我试过ZSchedule.delayed()
了,但它似乎也增加了后续时间表的延迟。
那么有什么办法可以增加初始延迟ZSchedule
吗?
scala - ZIO环境建设
我开始尝试使用 ZIO,并尝试运行以下高度复杂的程序:
(Slf4jLogger 是https://github.com/NeQuissimus/zio-slf4j)
如果我注释行//1
并且//2
一切正常。但在上面的表格中,我得到一个类型不匹配的错误:
我不明白以下内容:
该程序在环境中需要一个
Console
和一个System
实例,但.provide
在我没有记录时,我以前不需要它。为什么?为什么我突然需要它?根据 scaladoc,
.provideSome
提供运行此效果所需的*一些*环境,剩下的为 R0。对我来说,这意味着我不必提供完整的环境类型,我可以一个一个地添加所需的模块——但它似乎期望完整的 ZEnv 类型,就像.provide
——那么有什么意义呢?我无法通过 实例化匿名类
new Logger with Console.Live with system.System.Live
,因为 Slf4jLogger 在伴随对象中有一个工厂方法。如何将此工厂方法与其他特征一起使用?由于在 Java 中创建一个记录器实例是一种有效的方法,
.provide
甚至是正确的函数调用吗?
PS:我能够以一种丑陋的方式让它工作:
这编译并运行,但覆盖混合特征的内部成员似乎不正确......
它的工作方式与以下内容完全相同.provide
:
到底是怎么回事?
scala - 使用 ZIO 环境运行 http4s 服务器
试图学习使用 ZIO 库,所以我决定创建一个基本的 Web 服务应用程序。想法非常基本,使用 http4s lib 作为服务器和路由端点,在端点调用上打印“hello world”。
在我找到的文档和示例的帮助下,生成代码:
- 我创建路由器:
Router[AppTask]("/" ...
- 我创建服务器:
ZIO.runtime[AppEnvironment].flatMap ...
- 然后尝试使用 ZIO 环境启动服务器,但我缺少这一行:
_ <- ZManaged.environment[ZEnv] >>> server.toManaged_
被错误纠正,并在构建时抛出错误:错误:(34、39)推断类型参数 [touch.Main.AppEnvironment,Throwable,Unit] 不符合方法 >>> 的类型参数界限 [R1 >: zio.ZEnv,E1,B] _ <- ZManaged.environment[ZEnv] >>> server.toManaged_
Error:(34, 39) inferred type arguments [touch.Main.AppEnvironment,Throwable,Unit] do not conform to method >>>'s type parameter bounds [R1 >: zio.ZEnv,E1,B]
Error:(34, 50) type mismatch;
found : zio.ZManaged[touch.Main.AppEnvironment,Throwable,Unit]
(which expands to) zio.ZManaged[zio.clock.Clock with zio.console.Console with touch.HelloRepository,Throwable,Unit]
required: zio.ZManaged[R1,E1,B]
也许有人可以帮助我正确的语法?也将获得一些解释,或链接到解释这一点的文档。
scala - 在 Scala 2.13 和 Mill 项目中使用宏生成的源代码在 Intellij 中找不到
我在Scala 2.13 / Mill项目中使用zio-macros 。
这里的例子:
我可以运行测试,它会找到自动生成的代码。
问题是在Intellij中对自动生成代码的引用无法编译。
我是否必须配置某些东西或缺少什么?
scala - 如何使用 zio-test 测试异常情况
我有以下功能,我想测试:
如果有一个人,则此函数返回 People id
,resp。如果没有,则失败,例如:
快乐的案例有效,例如:
但是我怎样才能测试失败案例呢?我尝试了不同的东西,主要是类型不匹配。这是一个尝试:
scala - Scala ZIO 流数据类型
是否有办法找到 ZIO Stream 的大小,我有两个流,想找到两者之间的内积,我的问题是如何找到大小以迭代它们。我使用 map 和 foldMap 解决了这个问题,但我想检查两种方式之间的性能?这是我使用 Fold 和 Map 的工作:
输出:60