我目前正在关注Wiem Zine小姐的文章(特别是关于ZIO的文章(:使您的程序可测试性
但我无法通过
package console {
def println(line: String): ZIO[Console, Nothing, Unit] =
ZIO.accessM(_.console println line)
val readLine: ZIO[Console, Nothing, String] =
ZIO.accessM(_.console.readLine)
}
我在阿尔文亚历山大的页面上读过,但这都是关于范围界定的。
我在 intellij 中尝试过,但它抱怨。
会不会是
package object console {
...
}
而不是package console {}
?
或者这是斯卡拉3的事情?还是我做错了什么?
在 Scala 2 中,我们有一个包对象的概念。这里有一些例子:https://www.scala-lang.org/docu/files/packageobjects/packageobjects.html。
我认为"Wiem Zine's article"中的代码片段缺少object
关键字,所以你是对的,它应该是:package object console
,因为整个示例都在ZIO和Scala 2.x上。据我所知,Scala 3还没有ZIO:-(
@Thilo Scala 3 允许我们直接在文件中使用顶级定义,而无需包装到块中,这也是正确的。在 Scala 3 之前,可以使用package object
来获取通用包代码。