在Scala中使用方括号(private [...])进行私有作用域

Scr*_*ers 30 syntax scope scala

在查看Gatling源代码时,我遇到了以下语法:

private[http] def build = {
  // ...
}
Run Code Online (Sandbox Code Playgroud)

方括号内的语法是什么?

当我在IDE中点击它时,它是一个完全限定的包(com.excilys.ebi.gatling.http)的别名,但我找不到该别名的定义.

Rég*_*les 30

请参阅scala参考,特别是第5.2章.一些摘录:

私有修改器可以与模板中的任何定义或声明一起使用.只能从直接封闭的模板及其伴随模块或伴随类(第5.4节)中访问此类成员.它们不是由子类继承的,它们可能不会覆盖父类中的定义.

修改器可以使用标识符C(例如私有[C])进行限定,该标识符必须表示包含该定义的类或包.标有此类修改程序的成员只能分别从程序包C内的代码访问,或者只能从C类及其配套模块中的代码(第5.4节)访问.这些成员也只从C内部的模板继承.

  • 简而言之:private [http]将其设为私有com.excilys.ebi.gatling.http,而private [gatling]则将其设为私有com.excilys.ebi.gatling.我们将它们设为私有,以便它们不会出现在IDE自动完成中. (22认同)

And*_*ong 8

简而言之:这用于范围保护

  • private [C]表示访问是“直到” C的私有,其中C是相应的包,类或单例对象。

与受保护相同[C]

  • protected [C]:访问受保护的C语言(最高),其中C是相应的包,类或单例对象。