昨天我正在閱讀一篇名爲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" }
^