Определение нескольких пакетов
При просмотре исходного кода API Scala я встретил это определение пакета в scala/tags/R_2_8_0_final/src/library/scala/util/parsing/combinator/syntactical/StdTokenParsers.scala:
package scala.util.parsing
package combinator
package syntactical
Что это значит? Что класс будет доступен в нескольких пакетах?
Ответы
Ответ 1
Это в основном то же самое, что
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
Ответ 2
Ссылка Scala (глава 9):
Блок компиляции состоит из последовательности упаковок, условий импорта и класса и определения объектов, которым может предшествовать предложение пакета.
Единица компиляции
package p1;
. . .
package pn;
stats
начинающийся с одного или нескольких предложений пакета, эквивалентен компилятору, состоящему из
упаковки
package p1 { . . .
package pn {
stats
} . . .
}
См. также Организация кода в файлах и пространствах имен на вложенных пакетах.