2012-01-01 9 views
1

私はScalaの小さなプロジェクトに取り組んでいます。私は「インポート」と、次の問題がある:私のいずれかのファイルの先頭に、私はこれらのコマンドを持つ2つの事をインポート、場合Scala-IDEまたはScalaの異常なインポート動作

import main.Main._ 
import main.game.Game 
     ^^^^ 

それは下線付きで私に次のエラーメッセージを表示します'main' word:オブジェクトMainのメソッドmainの引数がありません;部分的に適用された関数として扱う場合は `_ 'でこのメソッドに従います。これは特にimportステートメントだけです。当然、実際に輸入することはありません。最初はセミコロンの推論の癖についてもう一度考えましたが、そうではありません。私は2つの行を交換し、このように書く:

import main.game.Game 
import main.Main._ 

それからすべてがうまくいきます。

誰もがそれを軽視できますか?それはScalaにとって特別なものですか?

答えて

8

おそらくにはmainの方法があります。だからimport main.Main._の後にmainパッケージの代わりにmainがこのメソッドを参照します。いくつかの方法でそれを避けることができます:

  1. 質問と同様に輸入順を変更してください。
  2. mainメソッドをインポートしないでください。Daniel C. Sobralの答えが示すとおりです。
  3. 明示的にトップレベルmainパッケージたいと言う:あなたがメンバー(またはサブパッケージ)を持っている可能性が低いと、ほとんどの場合、この問題を回避する必要がありthe normal Java package naming convention

    import _root_.main.game.Game 
    

comまたはorgと呼ばれます(ただし、netが問題になる可能性があります)。

6

main内にmain.Mainというメソッドがありますか?さて、それをインポートしてからパッケージの名前がmainになりました。あなたはこれを確認しようとすることができます:

import main.Main.{main => _, _} 
import main.game.Game 

これは、インポートされるからmainを除外します。

+0

Hm、面白いです。私が推測すると、Javaのメソッドはファーストクラスの値ではありません。ありがとうございました!良い人々が物事を理解するのがとても楽しいです。彼らは本当に一つに融合し、お互いを補完するので、2つ以上の答えを受け入れられるようにすることはできません。私はより一般的なものとしてアレクセイを選択し、またあなたの答えも指しています。 – noncom

+0

@noncom Javaには相対的なインポートはありませんか? –

+0

うん!決してそれを考えたことはありません... – noncom