【发布时间】:2019-09-15 08:39:07
【问题描述】:
我是 scala 的新手,谁能指出下面方括号 [this] 的术语是什么?
private[this] lazy val outputAttributes = AttributeSeq(output)
谢谢。
【问题讨论】:
-
将此作为使用示例:stackoverflow.com/a/43644925/1809978
标签: scala terminology
我是 scala 的新手,谁能指出下面方括号 [this] 的术语是什么?
private[this] lazy val outputAttributes = AttributeSeq(output)
谢谢。
【问题讨论】:
标签: scala terminology
这叫object-private access modifier
没有限定符的标记为
private的成员称为类私有, 而标记为private[this]的成员称为对象私有。
最严格的访问是标记一个方法 作为“对象私有”。执行此操作时,该方法仅适用于 当前对象的当前实例。的其他实例 同一个类不能访问该方法。
更准确地说,private[this] 的一部分[this] 被称为访问限定符:
AccessModifier ::= (‘private’ | ‘protected’) [AccessQualifier]
AccessQualifier ::= ‘[’ (id | ‘this’) ‘]’
【讨论】:
private[this] 将隐私更进一步,它使字段对象private。与private 不同,现在该字段不能被相同类型的其他实例访问,这使得它比普通的私有设置更加私密。
例如,
class Person {
private val name = "John"
def show(p: Person) = p.name
}
(new Person).show(new Person) // result: John
class Person {
private[this] val name = "John"
def show(p: Person) = p.name // compilation error
}
添加private[this]后,字段只能被当前实例访问,不能被其他任何类实例访问。
【讨论】: