如何在Scala中初始化自己类型的空变量?

时间:2012-03-29 22:16:08

标签: scala syntax

我的问题是理解是Scala的语法。我来自Java背景。我试图创建一个与它所在类相同类型的变量。例如:

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 {

有人可以解释为什么我不能这样做吗?我是这门语言的新手。任何解释都有助于更好地理解它。

1 个答案:

答案 0 :(得分:16)

因为你需要初始化它。否则编译器认为您只需要变量的接口:getter和setter方法。这与没有身体的方法是抽象的非常类似。下面将它初始化为null,并为您提供一个带有具体变量的有效具体类。

class Exp {
  var exp1: Exp = _;
}

这种_的使用意味着“默认值”,其中引用类型的默认值为null,非引用类型的默认值为0,false或类似值。