2014-06-17 16 views
8

Ich bin auf der Suche nach einer Möglichkeit, den unten genannten Kompilierungsfehler in Scala aufzulösen. Wo, ich versuche, den Wert einer Variablen clinSig zu aktualisieren, wenn die clinSig beim Aufruf von method1 null ist.Scala: Neuzuweisung zu Val

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) 

Alle Eingänge wäre hilfreich.

Danke !!!

+0

Nun, es geht zu machen ‚clinSig‘ verwendet wird, nie. – user1993412

Antwort

9

Die Parameter der Methode sind val. Sie können sie also nicht neu zuweisen. Sie können einen neuen val schaffen und dass unter der Bedingung, basierend zuweisen:

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) 
Verwandte Themen