我目前正在关注Wiem Zine小姐的文章(特别是有关ZIO的文章):Make your program testable
但是我无法通过
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)
}
我已经读过alvin alexander's page,但这全都与范围界定有关。
I tried it in intellij, but it complains.
可以是
package object console {
...
}
而不是package console {}
?
还是scala 3东西?还是我做错了什么?
答案 0 :(得分:1)
在Scala 2中,我们有了包对象的概念。这里有示例:https://www.scala-lang.org/docu/files/packageobjects/packageobjects.html。
我认为“ Wiem Zine的文章”中的代码片段缺少object
关键字,因此您应该正确地将其命名为:package object console
,因为整个示例都在ZIO和Scala 2.x上。据我所知,Scala 3尚无ZIO:-)
@Thilo也是正确的,因为Scala 3允许我们直接在文件中使用顶级定义,而不必将其包装成一个块。在Scala 3之前,您可以使用package object
来获取通用的软件包代码。