scala> class A { ... }
defined class A
A
可以使用或不使用括号进行实例化:
scala> val a = new A
a: A = A@4a27b5cd
scala> val aaa = new A()
aaa: A = A@68aa419e
哪种形式(更多)惯用?
如果包括括号,据我所知,创建一个对象是side effect
,类似于0-arity argument's style?
答案 0 :(得分:3)
我在这里写了一个类似的答案: https://stackoverflow.com/a/20664517/1296806
特别相关的是,构造函数与parens的方法不同。
构造函数始终具有非隐式参数列表。如果在定义中省略它,则提供它。
new A
是惯用的。 (如果需要对其进行合理化,请将实例视为结果。如果实例化是一种副作用,那么任何非原始的都不是纯粹的。)
new A().a
需要parens,因此它们在语法上很有用。
如果隐含的话,你必须提供parens;看到链接。