1. ホーム
  2. scala

[解決済み] Scala : valへの再割り当て [重複].

2022-03-14 05:19:26

質問

Scalaで以下のようなコンパイルエラーを解決する方法を探しています。ある変数の値を更新しようとしています。 clinSig もし clinSig を呼び出している間、NULLになります。 method1 .

import org.joda.time.Instant 
import java.util.Calendar

class TestingClass {   
    method1(null)   
    private def method1 (clinSig : Instant) {
    if (clinSig == null) {
      val calendar = Calendar.getInstance()
      calendar.set(2011, 0, 5, 0, 0, 0)
      calendar.set(Calendar.MILLISECOND, 0)
      clinSig = new Instant(calendar.getTime)
    }
    print(clinSig)   
   } 
}


error: reassignment to val
 [INFO]       clinSigUpdtDtTm = new Instant(calendar.getTime)

解決方法は?

メソッドのパラメータは val のため、再割り当てはできません。新しい val を作成し、条件に基づいてそれを割り当てます。

val updated = if (clinSig == null) {
    val calendar = Calendar.getInstance()
    calendar.set(2011, 0, 5, 0, 0, 0)
    calendar.set(Calendar.MILLISECOND, 0)
    new Instant(calendar.getTime)
}
else clinSig

println(updated)