【问题标题】:Is it possible in Scala to have functions/methods inside a package{}?Scala 中是否可以在包中包含函数/方法?{}
【发布时间】:2020-01-21 04:29:18
【问题描述】:

我目前正在关注 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 zio


【解决方案1】:

在 Scala 2 中,我们有一个包对象的概念。这里有例子:https://www.scala-lang.org/docu/files/packageobjects/packageobjects.html

我认为“Wiem Zine 的文章”中的代码 sn-p 缺少 object 关键字,所以你是对的,它应该是:package object console,因为整个示例都在 ZIO 和 Scala 2.x 上。据我所知,Scala 3 还没有 ZIO :-)

@Thilo 也是正确的,Scala 3 允许我们直接在文件中使用顶级定义,而无需包装到块中。在 Scala 3 之前,可以使用package object 获取通用包代码。

【讨论】:

    猜你喜欢
    • 2012-10-10
    • 1970-01-01
    • 1970-01-01
    • 2020-02-22
    • 1970-01-01
    • 2018-01-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多