47

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

_root_.scala.collection.immutable.HashMap

这其中的根源是什么?它似乎可以使用和不使用它。

4

3 回答 3

48

它必须做相对的 scala 导入 -_root_为您提供一种指定绝对包名称的方法。参见Scala 维基

于 2009-03-26T18:58:26.887 回答
8

_root_Scala 语言规范在第 9.4 节包参考中对此进行了说明

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

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

于 2012-02-14T17:27:23.927 回答
7

只有在当前包中有一个包含 HashMap 的嵌套包 scala.collection.immutable 时,才需要它。这将是不带 _root_ 部分的相对导入的首选。

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

于 2009-03-26T20:06:44.473 回答