我可以在Scala中创建"public val"但是"private var"吗?

Łuk*_*Lew 10 scala scala-2.8

即是否可以创建一个不能从类外部分配的var?

Rex*_*err 14

现在,不,没有办法做到这一点.

您仅限于以下三线解决方案:

class Hider {
  private[this] var xHidden: Int = 0
  def x = xHidden
  private def x_=(x0: Int) { xHidden = x0 }
}
Run Code Online (Sandbox Code Playgroud)

现在,类本身是唯一可以操作底层字段的人xHidden,而类的其他实例可以使用setter方法,每个人都可以看到getter方法.

如果你不介意使用不同的名字,你可以将var设为私有而忘记setter(两行).

没有"var to me,val to them"关键字.

  • @Łukasz - 不是在我一直在听,而不是我一直在听的地方.(我不到处都听,但我并没有永远存在.)但我怀疑它不会得到太多的帮助,因为强调要保持语言清晰度很小(即少数特殊情况,即使你所拥有的案例给你很大的表达能力),并且赞成不可变的解决方案而不是可变的解决方案. (3认同)