声明没有初始值的变量

时间:2016-05-11 23:05:03

标签: scala

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)?

1 个答案:

答案 0 :(得分:24)

错误是正确的,您只能在抽象类或特征上执行此操作。本教程可能假设您在抽象类中编写该代码。

可以将变量初始化为某个默认值:

var i: Int = _
var s: String = _

但这基本上与:

相同
var i: Int = 0
var s: String = null