[英]What is the meaning of “new {}” in Scala?
我正在研究.sbt
擴展文件參考文檔。 我感到困惑的代碼是:
lazy val version = new {
val finatra = "2.1.2"
}
我知道 val finatra
可以通過version.finatra
訪問,但它看起來像“對象單例”。 像這樣:
object version {
val finatra = "2.1.2"
}
在這種情況下,我還可以通過version.finatra
訪問 val finatra
。
我知道后者是創建“對象單例”的方法。 前一個呢? 謝謝
簡而言之,它正在創建匿名類型的新實例
根據Scala 語言規范:
考慮以下結構實例創建表達式:
new { def getName() = "aaron" }
這是通用實例創建表達式的簡寫
new AnyRef{ def getName() = "aaron" }
后者反過來又是塊的簡寫
{ class anon$X extends AnyRef{ def getName() = "aaron" }; new anon$X }
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.