2017-10-19 9 views
1

私は約.sbt拡張ファイルリファレンスドキュメントを勉強しています。どのようなコード私は混乱しています:Scalaの "new {}"の意味は何ですか?

lazy val version = new { 
    val finatra = "2.1.2" 
} 

私はヴァルfinatraversion.finatraによってアクセスすることができます知っているが、それはのように思える「オブジェクトシングルトン。」このように、このような:この場合

object version { 
    val finatra = "2.1.2" 
} 

、私はまたversion.finatraによりヴァルfinatraにアクセスすることができます。
私は後で "オブジェクトシングルトン"を作成する方法を知っています。 前者はどうですか?おかげ要するに

答えて

3

は、それがScala Language SpecによるとAnonymous Type

の新しいインスタンスを作成している:これは速記である

new { def getName() = "aaron" } 


は、以下の構造インスタンス生成式を考えてみましょう一般的なインスタンス作成式の場合

new AnyRef{ def getName() = "aaron" } 

後者は、順番にブロック

{ class anon$X extends AnyRef{ def getName() = "aaron" }; new anon$X } 

+0

偉大な説明の省略形です! –

関連する問題