我有一個類,我喜歡通過讀取配置文件來初始化我的var,該配置文件生成中間對象/ vals,我希望將它們分組並隱藏在方法中。 這裏是最低限度的問題 - 我用一個參數i調用ctor,實際上是一個文件來解析,而init-method生成的是字符串s,實際上比這裏更復雜,有很多中間對象創建:在scala中初始化var
class Foo (val i: Int) {
var s : String;
def init() {
s = "" + i
}
init()
}
會產生這樣的錯誤:class Foo needs to be abstract, since variable s is not defined
。在這個例子中,通過將String設置爲「」可以很容易解決:var s = "";
,但實際上該對象比String更復雜,沒有適當的Null實現。
我知道,我可以使用的選項,這不是字符串也適用於更復雜的東西:
var s : Option [String] = None
def init() {
s = Some ("" + i)
}
或者我可以用我的methodcall免除。使用選項會迫使我一遍又一遍地寫一些東西,沒有多少好處,因爲不需要別人來以我想的方式初始化它。
是否有另一種方法來實現我的目標?
那麼,在Scala中,你永遠不能聲明'var s:String',然後用其他方法初始化它? – asgs 2016-04-23 14:25:04