2013-02-05 33 views
23

我遇到下面的语法,同时期待通过加特林源代码:用方括号私人作用域(私人[...])Scala中

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

什么是方括号里面的语法?

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

回答

28

请参阅the scala reference,具体来说,第5.2章。一些摘录:

私人修改器可以用于模板中的任何定义或声明。这些成员只能从直接封闭的模板及其伴随模块或伴随类(第5.4节)中访问。它们是 未被子类继承,并且它们可能不会覆盖父类 类中的定义。

的MODI音响ER可以是合格音响ED与identi音响ER C(例如私人[C])必须 表示一类或包包围德音响nition。标有 这种修改器的成员只能从包C内的代码或者只能从C类及其伴随模块(§5.4)中的代码访问。 这种部件也仅继承模板内C.

+20

简而言之:私人[http]使其对于com.excilys.ebi.gatling.http是私密的,而私人[gatling]会使它对com.excilys.ebi.gatling保密。我们让这些私有的,所以他们不会出现在IDE自动完成。 –

3

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

  • 私人[C]表示访问是专用的“高达” C ,其中C是对应的包,类或单例对象的 。

同一受保护的[C]

  • 保护的[C]:访问被保护的 “上升到” C,其中C是 相应的包,类或单独的对象。