我有一些看起來像這樣的類:帶有非實例變量助理的構造函數?
class Foo(val:BasicData) extends Bar(val) {
val helper = new Helper(val)
val derived1 = helper.getDerived1Value()
val derived2 = helper.getDerived2Value()
}
......只是我不想守住「助手」超越構造結束的一個實例。在Java中,我會這樣做:
public class Foo {
final Derived derived1, derived2;
public Foo(BasicData val) {
super(val);
Helper helper = new Helper(val);
derived1 = helper.getDerived1Value();
derived2 = helper.getDerived2Value();
}
}
那麼我該如何在Scala中做類似的事情呢?我知道用apply方法創建一個與該類同名的助手對象:我希望稍微簡潔一些。
實際上,看起來像一個錯誤。 – 2010-05-22 22:33:46
上一個問題的討論:http://scala-programming-language.1934581.n4.nabble.com/Temporary-Values-in-Constructors-Retained-As-Fields-td1946886.html#a1946886 – retronym 2010-05-23 21:46:31
Odersky:「應該是一種優化,將只用於類初始化的私有[this]變量轉換爲構造函數局部變量。我認爲這樣做相對容易,但尚未完成。 – retronym 2010-05-23 21:47:19