Определение нескольких пакетов - PullRequest
36 голосов
/ 22 августа 2010

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

Что это значит? Что класс будет доступен в более чем одной упаковке?

Ответы [ 2 ]

52 голосов
/ 22 августа 2010

Это в основном то же самое, что и

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

7 голосов
/ 22 августа 2010

Ссылка Scala упоминает (глава 9, раздел 9.1):

Блок компиляции состоит из последовательности упаковок, предложений импорта и определений классов и объектов, которыеможет предшествовать предложение пакета.

Единица компиляции

package p1;
...
package pn;
stats

, начинающаяся с одного или нескольких предложений пакета, эквивалентна единице компиляции, состоящей из упаковки

package p1 { ...
  package pn {
   stats
  } ...
}

См. Также Организация кода в файлах и пространствах имен для вложенных пакетов.
Программирование Scala: Масштабируемость = Функциональное программирование + Объекты Дин Уэмплер, Алекс Пейн ,стр. 44, глава 2)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...