違いは何ですか
object Application extends App {
println("Hello World")
}
と
object Application {
def main(args: Array[String]): Unit = {
println("Hello World");
}
}
違いは何ですか
object Application extends App {
println("Hello World")
}
と
object Application {
def main(args: Array[String]): Unit = {
println("Hello World");
}
}
Appトレイトは、実行可能なscalaプログラムを作成するための便利な方法です。mainメソッドの代替との違いは、(明らかな構文上の違いは別として)Appトレイトが遅延初期化機能を使用することです。
2.9のリリースノートから(http://www.scala-lang.org/old/node/9483を参照)
Appトレイトを継承するオブジェクトは、代わりにScala 2.9の遅延初期化機能を利用して、継承されたmainメソッドの一部として本体全体を実行します。
Appスキームのもう1つの新機能は、コマンドライン引数にargs値(トレイトAppから継承)を介してアクセスできるようになったことです。
これらの2つのケースは、scalaスクリプトでは同じではありません。
object extends App
""コマンドでは実行されませんでしたが、 mainメソッドscala MyObject.scala
を含むオブジェクトは" "コマンドで実行されました。これは、スクリプトのmainメソッドを使用してオブジェクトを探すscalaとして説明されていました。scala MyObject.scala
EclipseのREPLまたはscalaworkseetを使用するMyObject.main(Array[String]())
場合は、両方の場合を明示的に呼び出す必要があります。
この簡単なヒントは、私のような初心者に役立ちます。
アプリの特性は、[[DelayedInit]]機能を使用して実装されます。つまり、メインメソッドが実行される前に、オブジェクトのフィールドは初期化されません。