Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala:重新分配到val_Scala - Fatal编程技术网

Scala:重新分配到val

Scala:重新分配到val,scala,Scala,我正在寻找一种方法来解决Scala中的以下编译错误。其中,我试图更新变量clinSig的值,如果调用method1时clinSig为null import org.joda.time.Instant import java.util.Calendar class TestingClass { method1(null) private def method1 (clinSig : Instant) { if (clinSig == null) {

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

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)   
   } 
}

任何投入都会有帮助


谢谢

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

好吧,这将使“clinSig”永远不会被使用。
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)