最近初始化班级成员

时间:2016-06-20 22:21:24

标签: scala

当我没有值来初始化它时,我需要创建一个类。稍后我会分配值。例如下面的代码,是否正确?

case class MyClass (val a: Int, val b: Int)

val c = MyClass (null, 1)

// later in the code
c.a = 2

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无效。