2014-06-17 20 views
8

Scala'da aşağıdaki derleme hatasını çözümlemenin bir yolunu arıyorum. Nerede, method1 çağırırken clinSig null ise, bir değişken clinSig değerini güncellemeye çalışıyorum.Scala: yeniden atama

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) 

Herhangi girişler yararlı olacaktır.

Teşekkürler!

+0

Eh, 'clinSig' asla kullanılmaz yapacak. – user1993412

cevap

9

Yöntem parametreleri, val s şeklindedir, böylece yeniden atayamazsınız. Yeni val oluşturmak ve durumuna göre bu atayabilirsiniz:

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)