私はScalaで小さなシミュレーションプログラムを書いています。それは俳優に基づいているので、システム内で有効なすべてのメッセージを含むファイル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._
私は、彼らは明らかにすでにこのスコープの中に輸入されたため、管理コンポーネントでメッセージのインポートを削除しようとしたが、その後、彼らはもはやそれらを見つけることができませんでした。アイデア?
これの背後にあるロジックは、名前を変更して参照のうちの1つを取得するだけですか?私はあなたのコードのノードバージョンを使用して、メッセージから「Tick」をそのまま使用することができ、私は同じエラーを受け取ります。私はまだすべてをインポートするためにアンダースコアを行っているからでしょうか? – Alex
あなたのアイデアからインスピレーションを得て、私は "import sim.messages._"と "sim.nodesをインポートする{Tick => _、_}"と思っています。 。これは適切な方法であると思われます。なぜなら、私が読んだことによると、何かがインポートされると、元に戻すことはできません。したがって、それを2つのステップで実行すると、私が必要としないTick定義がインポートされ、別の別名の下で再びインポートされます。とにかく、ソートされました、助けてくれてありがとう。 – Alex