访问修饰符的Scala参数?

时间:2014-10-30 22:21:45

标签: scala access-modifiers

之间有什么区别
class Test {
  private[this] val foo = 0
}

VS

class Test {
  private val foo = 0
}

[]内可以进行什么?另外,当我想查看其中的规格时,我应该搜索什么?我尝试使用Google搜索“scala访问修饰符参数/参数化scala访问修饰符”的各种组合,但没有出现。

2 个答案:

答案 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方法或类似方法很有用。)