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

时间:2019-05-09 03:41:13

标签: scala

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

case class Foo() {
  println(thing)
}

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

  

...类中的东西尚未解决。

如果可以避免的话,我宁愿不公开它以实现包级可见性。

1 个答案:

答案 0 :(得分:3)

您需要在案例类中导入object Foo的成员:

object Files {

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

  case class Foo() {
    import Foo._
    println(thing) //ok
  }
}

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