2013-03-02 88 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