2013-03-02 4 views
6

Я пишу небольшую программу моделирования в Скале. Он основан на актерах, поэтому я создал файл messages.scala, содержащий все сообщения, которые действительны в системе.Неоднозначный импорт в Scala

Вне этого у меня есть компонент управления, management.scala и файл, который определяет классы узлов и ссылок nodes.scala. Файлы управления и узла как import sim.messages._, так и управление import sim.nodes._, поскольку оно должно быть способным создавать экземпляры из этого файла.

Проблема возникает с одним типом сообщения Tick, который используется как management.scala, так и nodes.scala. При компиляции компоненты управления, я получаю:

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

Логика этого заключается в том, чтобы просто получить одну из ссылок, переименовав ее? Я использовал версию вашего узла, чтобы я мог продолжать использовать «Tick» из сообщений, и я все равно получаю ту же ошибку. Потенциально потому, что я все еще подчеркиваю, чтобы импортировать все? – Alex

+2

, беря вдохновение из вашей идеи, я придумал «import sim.messages._» и «import sim.nodes. {Tick => _, _}« Кажется, сделать трюк, назначив Tick ни к чему, а затем импортируя остальные , Кажется, это правильный способ сделать это, потому что согласно чему-то, что я только что прочитал, как только что-то импортируется, оно не может быть отменено. Поэтому, делая это в два этапа, импортируйте определение тика, которое я не хочу, а затем я импортирую его снова под другим псевдонимом. В любом случае, отсортировано сейчас, спасибо за помощь. – Alex

Смежные вопросы