当我没有值来初始化它时,我需要创建一个类。稍后我会分配值。例如下面的代码,是否正确?
case class MyClass (val a: Int, val b: Int)
val c = MyClass (null, 1)
// later in the code
c.a = 2
答案 0 :(得分:1)
默认情况下,案例类是不可变的,因此您不需要在字段声明前面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)
答案 1 :(得分:0)
如果您想稍后分配某些内容,则不能val
:
case class MyClass (var a: Int, val b: Int)
val c = MyClass(0, 1)
// later in the code
c.a = 2
同样Int
不是引用类型,因此null
无效。