昨天我正在阅读一篇名为How Scala Experience Improved Our Java Development的论文。使用初始化块初始化对象
里面的对象初始化部分,它说:
惯用的Scala技术为实例化对象(它 不暴露通过构造函数参数所有相关参数)是 创建一个匿名子类有一个初始化块这就要求 附加声明[Odersky的等人]:
我一直在做一些测试:
class B {
var x1: String = "B"
def setText(text: String) {
x1 = text
}
override def toString = x1
}
我真的不明白,为什么我可以这样做:
scala> new B{setText("new Text")}
res23: B = new Text
,但我不能这样做:
scala> new B{ setText "new Text" }
<console>:1: error: ';' expected but string literal found.
new B{ setText "new Text" }
^