Определение нескольких пакетов

При просмотре исходного кода 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
  } . . .
}

См. также Организация кода в файлах и пространствах имен на вложенных пакетах.