除非我做错了。我们似乎无法做到这样的事情:
var x;
x = 1;
在Scala中,而是你必须声明并为其赋值。为什么会出现这种情况有什么原因吗?
答案 0 :(得分:27)
显而易见的原因是不要让变量未初始化。 请注意,在没有初始化的声明中,您还需要指定类型。
var x: Type;
给出以下错误:
只有类可以声明但未定义的成员(注意,变量需要初始化才能定义)
实际上,只有抽象类可以在不定义成员的情况下声明成员。您仍然可以获得所需的行为(变量初始化为默认值)
var x: Type = _
如果Type
是引用类型,则x
将为null
。例如,在工厂方法在对象构造之后完成对象初始化的情况下,此方案很有用。