2012-03-29 89 views
8

我的問題是理解是斯卡拉的語法。我來自Java背景。我試圖讓相同類型班級它是一個變量,例如:如何在Scala中從你自己的類型初始化空變量?

class Exp { 
var exp1: Exp; 
} 

我收到此錯誤:

Driver.scala:4: error: class Exp needs to be abstract, since variable exp1 is not defined 
(Note that variables need to be initialized to be defined) 
    class Exp { 

有人能解釋我爲什麼不能這樣做呢?我對這門語言很陌生。任何解釋都有助於更好地理解它。

回答

16

因爲您需要初始化它。否則,編譯器認爲你只需要變量的接口:getter和setter方法。這與沒有身體的方法如何抽象非常相似。下面將它初始化爲null,並給你一個具體變量的有效具體類。

class Exp { 
    var exp1: Exp = _; 
} 

此使用的_表示「默認值」,其中缺省爲空引用類型和0,假,或用於非參考類型類似的東西。

+0

我知道Scala中的_表達通配符,但是當你這麼說的時候,它實際上在做什麼? – Andy 2012-03-29 22:59:57

+0

增加了一點關於_ – 2012-03-29 23:26:01

+0

使用的答案啊,我明白了。謝謝! – Andy 2012-03-29 23:28:59