我的问题是理解是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 {
有人可以解释为什么我不能这样做吗?我是这门语言的新手。任何解释都有助于更好地理解它。
答案 0 :(得分:16)
因为你需要初始化它。否则编译器认为您只需要变量的接口:getter和setter方法。这与没有身体的方法是抽象的非常类似。下面将它初始化为null,并为您提供一个带有具体变量的有效具体类。
class Exp {
var exp1: Exp = _;
}
这种_的使用意味着“默认值”,其中引用类型的默认值为null,非引用类型的默认值为0,false或类似值。