Piszę mały program symulacyjny w Scali. Jest oparty na aktorach, dlatego utworzyłem plik messages.scala
zawierający wszystkie komunikaty, które są prawidłowe w systemie.Niejednoznaczny import w Scali
Poza tym mam komponent zarządzania, management.scala
oraz plik definiujący klasy węzłów i łączy nodes.scala
. Zarządzanie i pliki węzłów zarówno import sim.messages._
, a następnie zarządzanie ma import sim.nodes._
, ponieważ musi być w stanie tworzyć instancje z tego pliku.
Problem dotyczy jednego typu komunikatu Tick
używanego zarówno przez management.scala
, jak i nodes.scala
. Po kompilacji komponent zarządzania, otrzymuję:
error: reference to Tick is ambiguous;
it is imported twice in the same scope by
import sim.nodes._
and import sim.messages._
Próbowałem usunięcie import komunikatów w składowej zarządzania, ponieważ zostały najwyraźniej już przywiezione do tego zakresu, ale potem nie mogli znaleźć ich więcej. Pomysły?
Logika stojąca za tym polega na usunięciu jednego z odwołań poprzez zmianę jego nazwy? Użyłem wersji kodu twojego węzła, dzięki czemu mogłem nadal używać "Tick" z wiadomości i nadal otrzymuję ten sam błąd. Potencjalnie, ponieważ nadal robię podkreślenia, by zaimportować wszystko? – Alex
czerpiąc inspirację z Twojego pomysłu, wymyśliłem "import sim.messages._" i "import sim.nodes. {Tick => _, _}" Wydaje się, że można zrobić lewę, przypisując Tick do niczego, a następnie importując resztę . Wydaje się, że jest to odpowiedni sposób, ponieważ zgodnie z tym, co właśnie przeczytałem, po zaimportowaniu czegoś nie można go cofnąć. Dlatego wykonanie go w dwóch krokach powoduje zaimportowanie definicji Tick, której nie chcę, a następnie zaimportuję ją ponownie pod innym aliasem. W każdym razie, posortowane, dzięki za pomoc. – Alex