2

我目前正在研究如何在 Scala 中处理协变和逆变类型参数化。还有一种特殊情况,var 字段必须是 private[this] 才能编译。来自此代码片段中的示例(取自此问题:private[this] vs private):

class Holder[+T] (initialValue: Option[T]) {
    // without [this] it will not compile
    private[this] var value = initialValue

    def getValue = value
    def makeEmpty { value = None }
}

我理解这个例子。但是我不明白的是,在什么情况下可以从其他实例访问私有字段而不是 itelt(this)?

谢谢你的帮助。

4

1 回答 1

5

如果成员是纯私有的,则可以从同一类的其他实例访问它。[this]后缀使其仅对包含它的实例可见。

于 2012-12-31T13:18:26.520 回答