Sto scrivendo un piccolo programma di simulazione in Scala. È basato sugli attori, quindi ho creato un file messages.scala
che contiene tutti i messaggi validi nel sistema.Importazioni ambigue in Scala
Al di fuori di questo, ho un componente di gestione, management.scala
e un file che definisce i nodi e le classi di collegamenti nodes.scala
. I file di gestione e nodo sono entrambi import sim.messages._
e quindi la gestione fa import sim.nodes._
in quanto deve essere in grado di istanziare le cose da quel file.
Il problema si presenta con un tipo di messaggio Tick
utilizzato da entrambi management.scala
e nodes.scala
. Al momento di compilare il componente di gestione, ottengo:
error: reference to Tick is ambiguous;
it is imported twice in the same scope by
import sim.nodes._
and import sim.messages._
Ho provato a rimuovere l'importazione di messaggi nella componente di gestione dal momento che erano apparentemente già importati in questo ambito, ma poi non riuscivano a trovare più di loro. Idee?
La logica dietro questo è solo per ottenere uno dei riferimenti fuori strada rinominandolo? Ho usato la versione dei nodi del tuo codice in modo che potessi continuare a usare semplicemente "Tick" dai messaggi e ho ancora lo stesso errore. Potenzialmente perché sto ancora facendo il trattino basso per importare tutto? – Alex
prendendo ispirazione dalla tua idea, ho trovato "import sim.messages._" e "import sim.nodes. {Tick => _, _}" Sembra fare il trucco assegnando Tick a niente e poi importando il resto . Questo sembra essere il modo appropriato per farlo perché, in base a qualcosa che ho appena letto, una volta importato qualcosa non può essere annullato. Pertanto, eseguendolo in due passaggi viene importata la definizione di zecca che non desidero e quindi la sto importando nuovamente con un alias diverso. Comunque, ordinati ora, grazie per l'aiuto. – Alex