Scala:重新分配到val
我正在寻找一种方法来解决Scala中的以下编译错误。其中,我试图更新变量clinSig的值,如果调用method1时clinSig为nullScala:重新分配到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) {
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)