Scala 声明一个没有初始值的变量

Scala 声明一个没有初始值的变量,scala,Scala,关于声明没有初始值的变量,有如下说明: 如果未为变量指定任何初始值,则该变量有效,如下所示: 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

关于声明没有初始值的变量,有如下说明:

如果未为变量指定任何初始值,则该变量有效,如下所示:

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>var-myVar:Int;
:10:错误:只有类可以有已声明但未定义的成员
(注意,需要初始化变量才能定义)
var-myVar:Int;
^
scala>val-myVal:String;
:10:错误:只有类可以有已声明但未定义的成员
val-myVal:字符串;
为什么会这样?本教程适用于较旧版本的Scala吗?
我找不到编写本教程的Scala的特定版本,但我正在OpenJDK 64位Java 1.8.066上运行Scala 2.11.7版


  • 是教程过时了,还是我的环境有问题

  • 是否可以在不初始化的情况下声明变量(var或val)


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

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

var i: Int = _
var s: String = _
但这基本上与:

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

这些“默认”值来自哪里?是否取决于类型?scala编译器是否定义了基本类型(如
String
)的默认值?回答我自己的问题,我想所有
AnyRef
都默认为
null
,并且
AnyVal
必须以某种方式定义其默认值(仍然不知道在哪里发生这种情况).var i:Int=\也给了我一个错误:局部变量必须是initialized@KiranM您使用的是什么版本的scala?@Alvaro-我使用的是scala 2.11.0