Подтвердить что ты не робот

Частная область с квадратными скобками (частная [...]) в Scala

Я просмотрел следующий синтаксис, просматривая исходный код Gatling:

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

Что такое синтаксис внутри квадратных скобок?

Когда я перебираю его в своей среде IDE, он является псевдонимом для полностью квалифицированного пакета (com.excilys.ebi.gatling.http), но я не могу найти, где был указан этот псевдоним.

4b9b3361

Ответ 1

См. ссылку scala, в частности, главу 5.2. Некоторая выдержка:

Частный модификатор может использоваться с любым определением или декларацией в шаблоне. Доступ к этим элементам можно получить только из встроенного шаблона и его сопутствующего модуля или класса компаньона (§5.4). Они есть не наследуемые подклассами, и они не могут переопределять определения в родительском классы.

Модификатор может быть квалифицирован с помощью идентификатора C (например, private [C]), который должен обозначают класс или пакет, содержащий определение. Участники, помеченные такой модификатор доступен, соответственно, только из кода внутри пакета C или только из кода внутри класса C и его сопутствующего модуля (п. 5.4). Такие члены также наследуются только из шаблонов внутри C.

Ответ 2

Вкратце: это используется для защиты области:

  • private [C] означает, что доступ является закрытым "до" C, где C является соответствующий пакет, класс или одноэлементный объект.

То же самое для защищенного [C]

  • protected [C]: доступ защищен "до" C, где C - соответствующий пакет, класс или одноэлементный объект.