2013-07-08 87 views

回答

27

顯而易見的原因是幫助不保留變量未初始化。 請注意,在沒有初始化的聲明中,您還需要指定類型。

var x: Type; 

提供了以下錯誤:

only classes can have declared but undefined members (Note that variables need to be initialized to be defined)

其實只是抽象類可以聲明不成員定義它們。你仍然可以得到所需的行爲(初始化爲缺省值的變量)作爲

var x: Type = _ 

如果Type是引用類型,xnull。例如,在工廠方法完成對象構造之後的對象初始化的情況下,此場景很有用。

+0

對'var'情況的很好的解釋。由於您不能在聲明後重新分配'val'標識符,解除此限制將有效地鼓勵'null'多個名稱的擴散。這將是不好的。 –

+1

我用'var x:Long = _'複製並粘貼你的例子,但它給了我錯誤:'局部變量必須被初始化'。 Scala需要了解更多新用戶才能使用您的解決方案嗎?例如,當OP正在請求一個數字類型時,用於'x'的合適的數字'Type'是什麼? – ecoe

+0

正如你所看到的那樣,'var ... = _'表示法只適用於類成員,不適用於本地變量。我相信沒有任何情況需要保證未初始化的局部變量。 –

相關問題