2013-03-02 14 views
6

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?

risposta

8

Prova

import sim.nodes._ 
import sim.nodes.{ Tick => NodesTick } 

e/o

import sim.messages._ 
import sim.messages.{ Tick => MessagesTick } 

Naturalmente, si dovrà rinominare i riferimenti alla Tick con quella giusta.

+0

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

+2

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

Problemi correlati