考虑到更改是源兼容的,通常应首选哪种解决方案?
这个
object Foo {
val Bar = new Baz(42, "The answer", true)
}
还是这个?
object Foo {
object Bar extends Baz(42, "The answer", true)
}
最佳答案
这两个构造之间的功能差异在于,object Bar
仅在需要时创建,而 val Bar
在 object Foo< 后立即创建使用
。实际上,这意味着如果右侧很昂贵并且并不总是需要的话,您应该使用该对象(或lazy val)。否则,val
可能更简单。
另外,请注意,如果类 Baz
是最终类,则您将无法使用 object
样式,因为您无法扩展 Baz
(不过,如果您想推迟创建直到需要时,您仍然可以使用 lazy val
)。
关于scala - val 或 object 表示不可变的最终单例对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6125134/