Ich schreibe ein kleines Simulationsprogramm in Scala. Es ist Akteur-basiert, also habe ich eine Datei messages.scala
erstellt, die alle Nachrichten enthält, die im System gültig sind.Mehrdeutige Importe in Scala
Außerhalb von diesem habe ich eine Verwaltungskomponente, management.scala
und eine Datei, die die Knoten und Links Klassen nodes.scala
definiert. Verwaltungs- und Knotendateien sowohl import sim.messages._
als auch die Verwaltung tun import sim.nodes._
, da es Dinge aus dieser Datei instanziieren kann. Das Problem kommt mit einem Nachrichtentyp Tick
, der sowohl von management.scala
als auch nodes.scala
verwendet wird. Bei der Management-Komponente kompilieren, erhalte ich:
error: reference to Tick is ambiguous;
it is imported twice in the same scope by
import sim.nodes._
and import sim.messages._
Ich habe versucht, den Import von Nachrichten in der Management-Komponente zu entfernen, da wurden sie offenbar bereits in diesem Umfang importiert, aber dann konnten sie sie nicht mehr finden. Ideen?
Die Logik dahinter ist nur, um eine der Referenzen aus dem Weg zu bekommen, indem Sie es umbenennen? Ich habe die Node-Version Ihres Codes verwendet, so dass ich weiterhin "Tick" aus Nachrichten verwenden konnte, und ich bekomme immer noch den gleichen Fehler. Vielleicht, weil ich immer noch unterstreiche, alles zu importieren? – Alex
Inspiriert von Ihrer Idee habe ich "import sim.messages._" und "import sim.nodes. {Tick => _, _}" entwickelt. Scheint so, als würde man Tick auf nichts setzen und dann den Rest importieren . Dies scheint der richtige Weg zu sein, denn nach etwas, das ich gerade gelesen habe, kann es nicht rückgängig gemacht werden, wenn es einmal importiert wurde. Daher wird die Tick-Definition, die ich nicht möchte, in zwei Schritten importiert, und dann importiere ich sie erneut unter einem anderen Alias. Wie auch immer, jetzt sortiert, danke für die Hilfe. – Alex