Scala中的_root_包是什么?

Lan*_*uhn 41 scala intellij-idea

我正在使用带有Scala插件的IntelliJ IDEA.如果我在代码中引用HashMap,然后使用Alt-Enter添加导入,则包将导入为:

_root_.scala.collection.immutable.HashMap
Run Code Online (Sandbox Code Playgroud)

根本部分是什么?它似乎可以使用和不使用它.

Kev*_*son 44

它必须做scala导入是相对的 - _root_为您提供一种指定绝对包名称的方法.请参阅Scala Wiki


Ala*_*lle 7

Scala语言规范_root_在第9.4节" 软件包引用"中对此进行了说明

特殊的预定义名称_root_是指包含所有顶级包的最外层根包.

有关完整的语言参考,请参阅以下PDF:http://www.scala-lang.org/docu/files/ScalaReference.pdf


sta*_*lue 5

如果在当前包中有一个包含HashMap的嵌套包scala.collection.immutable,则只需要它.没有_root_部分的相对导入会优先考虑这一点.

编辑:这不太正确,如果你有scala包作为祖先或嵌套在当前包中,问题就已经开始了.