在 Scala 中是否可以在包内包含 functions/methods{}?
Is it possible in Scala to have functions/methods inside a package{}?
我目前正在关注 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 的东西吗?还是我做错了什么?
在 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
来获取通用包代码。
我目前正在关注 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 的东西吗?还是我做错了什么?
在 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
来获取通用包代码。