问题标签 [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.

0 投票
2 回答
130 浏览

scala - 对象扩展同名特征的模式的目的 - 对象 Live 扩展 Live

我正在尝试ZIO

我不明白为什么Live添加 as Trait,然后object提供 an ,例如:

这种模式出现在不同的地方,例如zio.console.Console

是否有原因,或者是否存在有意义的情况?

0 投票
1 回答
82 浏览

scala - Scala 中是否可以在包中包含函数/方法?{}

我目前正在关注 Wiem Zine 小姐的文章(特别是关于 ZIO):让您的程序可测试

但我无法通过

我读过alvin alexander 的页面,但都是关于范围界定的。

我在intellij中尝试过,但它抱怨。

会不会是一个

而不是package console {}

还是那是scala 3的东西?还是我做错了什么?

0 投票
1 回答
663 浏览

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

0 投票
1 回答
1531 浏览

scala - ZIO:为什么我会收到“产生了未经检查的错误”。

我对ZIO中的异常处理有误解。我遵循了ZIO-Documentation

在测试类中,我运行以下代码:

我想用这个fold函数我可以处理这个异常,但它甚至没有到达那里。我在控制台上得到这个异常:

我想念什么?

这是一个最小的例子:

这是整个代码:SwapiTest.scala

0 投票
2 回答
881 浏览

scala - ZIO ZSchedule 的初始延迟

我试图制定的时间表必须:

  1. 在指定延迟后开始
  2. 以固定速率重复
  3. 如果达到给定的时间限制或遇到终止状态则终止

所以我所拥有的是(2.)和(3.):

我试过ZSchedule.delayed()了,但它似乎也增加了后续时间表的延迟。

那么有什么办法可以增加初始延迟ZSchedule吗?

0 投票
3 回答
2007 浏览

scala - ZIO环境建设

我开始尝试使用 ZIO,并尝试运行以下高度复杂的程序:

(Slf4jLogger 是https://github.com/NeQuissimus/zio-slf4j

如果我注释行//1并且//2一切正常。但在上面的表格中,我得到一个类型不匹配的错误:

我不明白以下内容:

  1. 该程序在环境中需要一个Console和一个System实例,但.provide在我没有记录时,我以前不需要它。为什么?为什么我突然需要它?

  2. 根据 scaladoc,.provideSome 提供运行此效果所需的*一些*环境,剩下的为 R0。对我来说,这意味着我不必提供完整的环境类型,我可以一个一个地添加所需的模块——但它似乎期望完整的 ZEnv 类型,就像.provide——那么有什么意义呢?

  3. 我无法通过 实例化匿名类new Logger with Console.Live with system.System.Live,因为 Slf4jLogger 在伴随对象中有一个工厂方法。如何将此工厂方法与其他特征一起使用?

  4. 由于在 Java 中创建一个记录器实例是一种有效的方法,.provide甚至是正确的函数调用吗?

PS:我能够以一种丑陋的方式让它工作:

这编译并运行,但覆盖混合特征的内部成员似乎不正确......

它的工作方式与以下内容完全相同.provide

到底是怎么回事?

0 投票
1 回答
1300 浏览

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]

也许有人可以帮助我正确的语法?也将获得一些解释,或链接到解释这一点的文档。

0 投票
2 回答
502 浏览

scala - 在 Scala 2.13 和 Mill 项目中使用宏生成的源代码在 Intellij 中找不到

我在Scala 2.13 / Mill项目中使用zio-macros 。

这里的例子:

我可以运行测试,它会找到自动生成的代码。

问题是在Intellij中对自动生成代码的引用无法编译。

我是否必须配置某些东西或缺少什么?

0 投票
6 回答
2465 浏览

scala - 如何使用 zio-test 测试异常情况

我有以下功能,我想测试:

如果有一个人,则此函数返回 People id,resp。如果没有,则失败,例如:

快乐的案例有效,例如:

但是我怎样才能测试失败案例呢?我尝试了不同的东西,主要是类型不匹配。这是一个尝试:

0 投票
1 回答
355 浏览

scala - Scala ZIO 流数据类型

是否有办法找到 ZIO Stream 的大小,我有两个流,想找到两者之间的内积,我的问题是如何找到大小以迭代它们。我使用 map 和 foldMap 解决了这个问题,但我想检查两种方式之间的性能?这是我使用 Fold 和 Map 的工作:

输出:60