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