【问题标题】:What is the meaning of "new {}" in Scala?Scala中的“new {}”是什么意思?
【发布时间】:2021-11-05 01:41:49
【问题描述】:

我正在研究.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 anonymous-types


    【解决方案1】:

    简而言之,它正在创建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 }
    

    【讨论】:

      猜你喜欢
      • 2012-12-18
      • 2023-03-27
      • 2011-01-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-16
      • 1970-01-01
      相关资源
      最近更新 更多