这个Scala教程有关于声明没有初始值的变量的以下内容:
如果您没有为变量分配任何初始值,则它有效,如下所示:
Run Code Online (Sandbox Code Playgroud)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;
Run Code Online (Sandbox Code Playgroud)
为什么是这样?是旧版Scala的教程吗?
我找不到本教程编写的Scala的特定版本,但我在OpenJDK 64bit,Java 1.8.0_66上运行Scala版本2.11.7.
教程是否过时,或者是我的环境问题?
是否可以在不初始化的情况下声明变量(var或val)?
Alv*_*sco 27
错误是正确的,您只能在抽象类或特征上执行此操作.本教程可能假设您在抽象类中编写该代码.
可以将变量初始化为某个默认值:
var i: Int = _
var s: String = _
Run Code Online (Sandbox Code Playgroud)
但这基本上与以下相同:
var i: Int = 0
var s: String = null
Run Code Online (Sandbox Code Playgroud)