This Scala tutorial有关于声明没有初始值的变量的以下内容:
如果您没有为变量分配任何初始值,则它有效,如下所示:
var myVar :Int; val myVal :String;
但是当我在Scala REPL中尝试该代码时,我得到了这些错误:
scala> var myVar :Int;
<console>:10: error: only classes can have declared but undefined members
(Note that variables need to be initialized to be defined)
var myVar :Int;
^
scala> val myVal :String;
<console>:10: error: only classes can have declared but undefined members
val myVal :String;
这是为什么?是旧版Scala的教程吗? 我找不到本教程编写的Scala的特定版本,但我在OpenJDK 64bit,Java 1.8.0_66上运行Scala版本2.11.7。
教程是否过时,或者是我的环境有问题?
是否可以在不初始化的情况下声明变量(var或val)?
答案 0 :(得分:24)
错误是正确的,您只能在抽象类或特征上执行此操作。本教程可能假设您在抽象类中编写该代码。
可以将变量初始化为某个默认值:
var i: Int = _
var s: String = _
但这基本上与:
相同var i: Int = 0
var s: String = null