【问题标题】:Scala : reassignment to val [duplicate]Scala:重新分配给 val [重复]
【发布时间】:2014-08-07 17:18:11
【问题描述】:

我正在寻找一种方法来解决 Scala 中的以下编译错误。我正在尝试更新变量clinSig 的值,如果在调用method1clinSig 为空。

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)

【问题讨论】:

  • 好吧,它会让 'clinSig' 永远不会被使用。

标签: scala


【解决方案1】:

方法参数是vals,因此您不能重新分配它们。您可以创建一个新的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)

【讨论】:

    猜你喜欢
    • 2018-05-02
    • 1970-01-01
    • 1970-01-01
    • 2019-12-03
    • 2018-06-04
    • 2018-10-01
    • 2014-01-06
    • 2020-08-05
    • 2022-07-29
    相关资源
    最近更新 更多