1

我正在做一个小型 Scala 项目。我对“导入”有以下问题:

如果在我的一个文件的顶部,我使用这些命令导入了两件事:

import main.Main._
import main.game.Game
       ^^^^

它在带下划线的“主”字中给了我以下错误消息:“对象 Main 中的方法 main 缺少参数;如果您想将其视为部分应用的函数,请使用 '_' 遵循此方法”这很奇怪,尤其是它只是一个导入语句。自然不会发生实际的导入。起初我又想到了分号推理的怪癖,但事实并非如此。如果我交换这两行并这样写:

import main.game.Game
import main.Main._

那么一切都很好。

任何人都可以对此有所了解吗?Scala 有什么特别之处吗?

4

2 回答 2

8

大概你有一个main方法在object Main. 所以 afterimport main.Main._ main指的是这个方法而不是main包。您可以通过以下几种方式避免它:

  1. 更改导入顺序,如问题所示。
  2. main正如 Daniel C. Sobral 的回答所暗示的那样,不要导入该方法。
  3. 明确地说你想要顶级main包:

    import _root_.main.game.Game
    

在大多数情况下,遵循正常的 Java 包命名约定应该可以避免这个问题,因为您不太可能调用com或调用成员(或子包) org(尽管net可能是一个问题)。

于 2012-01-01T14:07:55.553 回答
6

你确实有一个名为maininside的方法main.Main,不是吗?好吧,既然你导入了它,它现在已经通过 name隐藏了main。你可以试试这个来确认:

import main.Main.{main => _, _}
import main.game.Game

这将排除main在导入之外。

于 2012-01-01T14:07:24.927 回答