问题
I am studying about .sbt
extension file reference docs. What codes I am confused is:
lazy val version = new {
val finatra = "2.1.2"
}
I know val finatra
can be accessed by version.finatra
, but it seems like "object singleton." Such like this:
object version {
val finatra = "2.1.2"
}
In this case, I can also access val finatra
by version.finatra
.
I know the later one is the way to create "object singleton".
How about the former one? Thanks
回答1:
In short, it is creating new instance of Anonymous Type
According to the Scala Language Spec:
Consider the following structural instance creation expression:
new { def getName() = "aaron" }
This is a shorthand for the general instance creation expression
new AnyRef{ def getName() = "aaron" }
The latter is in turn a shorthand for the block
{ class anon$X extends AnyRef{ def getName() = "aaron" }; new anon$X }
来源:https://stackoverflow.com/questions/46825794/what-is-the-meaning-of-new-in-scala