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