0
当我没有值初始化它时,我需要创建一个类。稍后我会分配值。例如下面的代码,它是正确的吗?初始化类成员迟到
case class MyClass (val a: Int, val b: Int)
val c = MyClass (null, 1)
// later in the code
c.a = 2
当我没有值初始化它时,我需要创建一个类。稍后我会分配值。例如下面的代码,它是正确的吗?初始化类成员迟到
case class MyClass (val a: Int, val b: Int)
val c = MyClass (null, 1)
// later in the code
c.a = 2
案例类是默认不可改变的,所以你不需要val
在你的领域声明的前面:
// Instead of this
case class MyClass(val a: Int, val b: Int)
// Do this
case class MyClass(a: Int, b: Int)
这就是说,你不能重新分配领域,而不是你要创建实例的新副本,新的价值:
// Instead of this
c.a = 2
// Do this
val updatedC = c.copy(a = 2)
如果你想分配的东西后,它不能val
:
case class MyClass (var a: Int, val b: Int)
val c = MyClass(0, 1)
// later in the code
c.a = 2
另外Int
不是参考类型,所以null
是不会工作的。
试着以不同的方式思考你的代码。考虑不使用空值而不重新赋值,例如,你的代码是什么样的? – nmat