之间有什么区别
class Test {
private[this] val foo = 0
}
VS
class Test {
private val foo = 0
}
[]
内可以进行什么?另外,当我想查看其中的规格时,我应该搜索什么?我尝试使用Google搜索“scala访问修饰符参数/参数化scala访问修饰符”的各种组合,但没有出现。
答案 0 :(得分:6)
当我想查看其中的规格时,我应该搜索什么?
在The Scala Language Specification中,它被定义为“访问修饰符”和“访问限定符”(参见§5.2中的BNF)。
之间有什么区别
...
什么都可以进入[]?
您可以将类名,包名或this
放在那里。以下是语言规范的相关引用,解释了这一点(更多细节请参见§5.2):
修饰符可以使用必须的标识符C(例如private [C])进行限定 表示包含该定义的类或包。标有的成员 只能从包内的代码访问这样的修饰符 C或仅来自C类及其配套模块(第5.4节)内的代码。
另一种形式的资格是私人[this]。成员M标记 使用此修饰符称为对象保护;它只能从中访问 在定义它的对象中。也就是说,选择p.M仅在前缀为this或O.this时才合法,对于包含引用的某些类O.在 另外,对不合格的私人申请的限制。
答案 1 :(得分:3)
第一个是私有的例如类,第二个是类。如果您使用第二个版本,则可以从另一个Test类实例访问(它对equals
方法或类似方法很有用。)