1. ホーム
  2. scala

[解決済み] scalaのApp traitとmainメソッドの違いについて

2023-03-06 21:46:50

質問

とはどのような違いがあるのでしょうか?

object Application extends App {
   println("Hello World")
}

object Application {
    def main(args: Array[String]): Unit = {
        println("Hello World");
    }
}

どのように解決するのですか?

App traitは実行可能なscalaプログラムを作成するための便利な方法です。メインメソッドのaltenativeとの違いは、(明らかな構文の違いは別として)App traitが遅延イニシャルの機能を使用することです。

2.9 のリリースノートから ( http://www.scala-lang.org/old/node/9483 )

App traitを継承したオブジェクトは、代わりにScala 2.9の遅延初期化機能を利用して、継承したmainメソッドの一部として本体全体を実行することができます。

Appスキームのもう一つの新しい特徴は、コマンドライン引数がargs値(これはApp traitから継承されます)を介してアクセスできるようになったことです。