" new {}"是什么意思?在斯卡拉?

时间:2017-10-19 08:36:19

标签: scala

我正在研究.sbt扩展文件参考文档。我困惑的是什么代码:

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

我知道finatra可以访问val version.finatra,但它似乎是"对象单身。"像这样:

object version {
    val finatra = "2.1.2"
}

在这种情况下,我还可以finatra访问val version.finatra 我知道后者是创建"对象单身"的方法。 前一个怎么样?感谢

1 个答案:

答案 0 :(得分:3)

简而言之,它正在创建Anonymous Type

的新实例

根据Scala Language Spec

考虑以下结构实例创建表达式:

new { def getName() = "aaron" }

这是一般实例创建表达式

的简写
new AnyRef{ def getName() = "aaron" }

后者又是块

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