2012-03-29 85 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