在 Scala 中是否有可能在包中包含函数/方法{}?



我目前正在关注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来获取通用包代码。

相关内容

  • 没有找到相关文章

最新更新