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

标签 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 64位Java 1.8.0_66上运行Scala版本2.11.7。




本教程是否已过时,或者我的环境存在问题?
是否可以在不初始化变量的情况下声明变量(var或val)?

最佳答案

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

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

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


但这本质上与以下内容相同:

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

关于scala - 声明一个没有初始值的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37174687/

相关文章:

scala - 多个scala库导致intellij错误?

scala - Scala 拥有 "const classes"a la Fantom 的障碍是什么?

postgresql - 使用 scala 在 Jooq 中进行事务和条件更新

scala - 求和类型的标准名称,如 Either,但适用于 3 种情况?

scala - 为什么这个删除警告与声明为元组的成员变量?

java - sbt Scalatest NoClassDefFoundError

scala - com.typesafe.config.ConfigException$NotResolved : has not been resolved,

scala - 无法基于 ...Inclusive[Long] 类型的集合构造具有 Long 类型元素的 ...Inclusive[Long] 类型集合

scala - 无状态 Akka Actor

scala - 一个对象在 Scala 中扩展了它的伴随案例类