Я пишу небольшую программу моделирования в Скале. Он основан на актерах, поэтому я создал файл 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._
Я попытался удалить импорт сообщений в компоненте управления, так как они, по-видимому, уже импортировали в эту сферу, но тогда они не могли найти их больше. Идеи?
Логика этого заключается в том, чтобы просто получить одну из ссылок, переименовав ее? Я использовал версию вашего узла, чтобы я мог продолжать использовать «Tick» из сообщений, и я все равно получаю ту же ошибку. Потенциально потому, что я все еще подчеркиваю, чтобы импортировать все? – Alex
, беря вдохновение из вашей идеи, я придумал «import sim.messages._» и «import sim.nodes. {Tick => _, _}« Кажется, сделать трюк, назначив Tick ни к чему, а затем импортируя остальные , Кажется, это правильный способ сделать это, потому что согласно чему-то, что я только что прочитал, как только что-то импортируется, оно не может быть отменено. Поэтому, делая это в два этапа, импортируйте определение тика, которое я не хочу, а затем я импортирую его снова под другим псевдонимом. В любом случае, отсортировано сейчас, спасибо за помощь. – Alex