类和伴生对象如何在 Scala 中看到私有值?

Gre*_*reg 1 scala

object Foo {
  private val thing: String = "Yay"
}

case class Foo() {
  println(thing)
}
Run Code Online (Sandbox Code Playgroud)

对象 Foo 是否可以thing仅在 Foo 的类实例中可见(共享可见性)?如图所示,编译器抱怨

……课堂上的事情还没有解决。

如果可以避免的话,我宁愿不将其打开到包级可见性。

Krz*_*sik 5

您需要导入object Foo内部案例类的成员:

object Files {

  object Foo {
    private val thing: String = "Yay"
  }

  case class Foo() {
    import Foo._
    println(thing) //ok
  }
}
Run Code Online (Sandbox Code Playgroud)

使用限定名称Foo.thing而不导入也可以。