Вы можете использовать синтаксис без скобок, как показывает ваш пример, но я никогда не видел этого в "реальной жизни".Я думаю, что почти всегда новая функция просто используется для получения родительских пакетов в области видимости:
package bobrockets.navigation
package tests
//now the content of bobrockets.navigation is in scope
Это в основном то же самое, что писать
package bobrockets.navigation.test
import bobrockets.navigation._
Однако первая версия следует за DRYпринцип.Например, если вы переименуете пакет bobrockets в robertsrockets, вы можете забыть изменить импорт во второй версии (что может указывать на некоторый «старый» код), что невозможно в первой версии.В некотором смысле это (вместе с возможностью иметь такие модификаторы, как private[bobsrockets.navigation]
) позволяет использовать группы пакетов в качестве «модулей» или «суперпакетов» с очень легким синтаксисом.
Это основное использование I 'Я знаю об этом, но Scala часто демонстрирует удивительные синергетические эффекты и размывает границы (например, между объектами, пакетами и объектами пакетов, между vals и объектами, между def и функциями и т. д.) интересными способами.Так что будущее покажет, есть ли у этой функции другие полезные приложения.
[Обновление] Вот новая статья на эту тему самого Мартина Одерского: http://www.artima.com/scalazine/articles/chained_package_clauses_in_scala.html