2013-03-02 100 views
6

我正在Scala中编写一个小模拟程序。它是基于角色的,所以我创建了一个文件messages.scala,其中包含系统中有效的所有消息。Scala中的模糊输入

在此之外,我有一个管理组件,management.scala和一个文件,它定义了节点和链接类nodes.scala。管理和节点文件都是import sim.messages._,然后管理确实是import sim.nodes._,因为它需要能够从该文件实例化事物。

问题出现在management.scalanodes.scala两个使用的消息类型Tick。在编制管理组件,我得到:

error: reference to Tick is ambiguous; 
it is imported twice in the same scope by 
import sim.nodes._ 
and import sim.messages._ 

我试图在管理组件删除邮件的进口,因为他们显然已经在这个范围内进口,而随后他们找不到他们了。想法?

回答

8

尝试

import sim.nodes._ 
import sim.nodes.{ Tick => NodesTick } 

和/或

import sim.messages._ 
import sim.messages.{ Tick => MessagesTick } 

当然,你必须将引用与正确的重命名为Tick

+0

这背后的逻辑只是通过重命名来获得参考文献之一吗?我使用了代码的节点版本,这样我就可以继续使用消息中的“滴答”,但仍然会出现相同的错误。可能是因为我仍然在做下划线来导入所有内容? – Alex 2013-03-02 19:16:34

+2

从你的想法中获得灵感,我想出了“import sim.messages._”和“import sim.nodes。{Tick => _,_}”似乎通过将Tick分配给任何东西然后导入其余。这似乎是这样做的适当方式,因为根据我刚刚阅读的内容,一旦输入了内容,就无法撤消。因此,分两步输入我不想要的Tick定义,然后再在不同的别名下输入它。无论如何,现在排序,感谢您的帮助。 – Alex 2013-03-02 19:24:17