Определение нескольких пакетов
Просматривая исходный код API Scala, я встретил это определение пакета в http://lampsvn.epfl.ch/trac/scala/browser/scala/tags/R_2_8_0_final/src/library/scala/util/parsing/combinator/syntactical/StdTokenParsers.scala:
package scala.util.parsing
package combinator
package syntactical
Что это значит? Что класс будет доступен в более чем одной упаковке?
2 ответа
Это в основном так же, как
package scala.util.parsing.combinator.syntactical
import scala.util.parsing._
import scala.util.parsing.combinator._
...
Таким образом, "укладывая" пакеты так, как вы написали, вы можете получить супер-пакеты в области видимости. Смотрите также эти ответы.
[Обновление] Вот новая статья, написанная Мартином Одерским на эту тему: http://www.artima.com/scalazine/articles/chained_package_clauses_in_scala.html
Справочник Scala упоминает (глава 9, раздел 9.1):
Модуль компиляции состоит из последовательности упаковок, предложений импорта и определений классов и объектов, которым может предшествовать предложение пакета.
Блок компиляции
package p1; ... package pn; stats
начало с одного или нескольких предложений пакета эквивалентно единице компиляции, состоящей из упаковки
package p1 { ... package pn { stats } ... }
См. Также Организация кода в файлах и пространствах имен на вложенных пакетах.
(Из программирования Scala: Масштабируемость = Функциональное программирование + Объекты, Дин Уэмплер, Алекс Пейн, стр. 44, глава 2)