38

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

private[http] def build = {
  // ...
}

方括号内的语法是什么?

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

4

2 回答 2

37

请参阅scala 参考,特别是第 5.2 章。摘录:

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

修饰符可以用标识符 C(例如 private[C])限定,它必须表示包含定义的类或包。标有此类修饰符的成员分别只能从包 C 内的代码或只能从类 C 及其配套模块(第 5.4 节)内的代码访问。此类成员也仅从 C 中的模板继承。

于 2013-02-05T11:42:49.267 回答
10

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

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

与受保护相同[C]

  • protected[C]:访问受保护“最多”C,其中 C 是相应的包、类或单例对象。
于 2017-01-23T18:25:10.120 回答