我正在开发一个小型Scala项目。我对'import'有以下问题:
如果,在我的一个文件的顶部,我使用这些命令导入两件事:
import main.Main._
import main.game.Game
^^^^
它在带下划线的'main'字样中给出了以下错误消息:“对象Main中方法main缺少参数;如果要将其视为部分应用函数,则使用`_'跟随此方法”奇怪的是,这只是一个导入声明。当然没有实际的进口发生。起初我再次考虑了分号推理的怪癖但事实并非如此。如果我交换两行并写成这样:
import main.game.Game
import main.Main._
然后每个人都很好。
有人可以对此有所了解吗? Scala有什么特别之处吗?
答案 0 :(得分:8)
据推测,您在main
中有一个object Main
方法。因此,在import main.Main._
main
引用此方法而不是main
包后。你可以通过几种方式避免它:
main
方法,正如Daniel C. Sobral的回答所示。明确表示您需要顶级main
包:
import _root_.main.game.Game
在大多数情况下,关注the normal Java package naming convention应避免此问题,因为您不太可能拥有名为com
或org
的成员(或子包)(尽管net
可能是问题)。
答案 1 :(得分:6)
main
内有一个名为main.Main
的方法,不是吗?好吧,既然你导了它,它现在已经用名称main
隐藏了包。您可以尝试此确认:
import main.Main.{main => _, _}
import main.game.Game
这将排除导入main
。