Что такое пакет _root_ в Scala? - PullRequest
40 голосов
/ 26 марта 2009

Я использую IntelliJ IDEA с плагином Scala. Если я ссылаюсь на HashMap в коде и затем использую Alt-Enter для добавления импорта, пакет импортируется как:

_root_.scala.collection.immutable.HashMap

Что такое root часть этого? Кажется, работает с и без него.

Ответы [ 3 ]

42 голосов
/ 26 марта 2009

Он должен выполнять относительный импорт scala - _root_ дает вам возможность указать абсолютное имя пакета. См. Scala Wiki

7 голосов
/ 14 февраля 2012

В спецификации языка Scala говорится о _root_ в разделе 9.4 Ссылки на пакеты

Специальное предопределенное имя _root_ относится к самому внешнему корневому пакету, который содержит все пакеты верхнего уровня.

Полный текст на английском языке см. В следующем PDF-файле: http://www.scala -lang.org / documents / files / ScalaReference.pdf

5 голосов
/ 26 марта 2009

Он понадобится вам только в том случае, если внутри вашего текущего пакета у вас есть вложенный пакет scala.collection.immutable, содержащий HashMap. Это предпочтительнее при относительном импорте без _root_ части.

Редактировать: Это было не совсем правильно, проблемы начинаются уже, если у вас есть пакет scala в качестве предка или вложенный в текущий пакет.

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