9

scala Appトレイトを使用すると、printlnを機能させることができません。

この簡単な例は、期待どおりに出力されます。

object HelloWorld {
  def main(args: Array[String]) {
    println("Hello, world!")
  }
}

しかし、私がその特性を紹介すると、それはしません、

object HelloWorld extends App {
  println("Hello, world!")
}

エラーは発生しませんが、コンソールに何も出力されません。

4

3 に答える 3

10

最初にコンパイルしましたか(scalac HelloWorld.scalaを実行しています)?このコメントを参照してください:http ://www.scala-lang.org/node/9483#comment-40627

説明を追加するために編集:最初のバージョンは実際にコンパイルされました。明示的なmainメソッドのないScalaファイルは、コンパイルされずにスクリプトとして実行されます。つまり、2番目のバージョンでは、ファイル内のコマンドは、インタープリターに入力されたかのように順番に実行されます。つまり、オブジェクトHelloWorldが作成されますが、メソッドは呼び出されません。スクリプト言語としてのScalaの詳細については、こちらをご覧ください(ステップ5までスクロールしてください):http ://www.artima.com/scalazine/articles/steps.html

于 2012-06-22T00:33:59.260 に答える
5

行を追加します

object HelloWorld extends App {
  /* code */
}

HelloWorld.main(args)

ファイルの最後に。

クラスはメソッドを定義しますが、それも呼び出す必要があります。

于 2014-08-23T17:04:42.110 に答える
-1

http://www.scala-lang.org/api/current/scala/App.htmlによると

あなたがしたい

object Main extends App {
 Console.println("Hello World: " + (args mkString ", "))
}
于 2012-06-22T01:06:02.133 に答える