2014-06-17 2 views
8

스칼라에서 아래의 컴파일 오류를 해결할 방법을 찾고 있습니다. 어디, methodS1을 호출하는 동안 clinSig가 null 인 경우 변수 clinSig의 값을 업데이트하려고합니다.스칼라 : 값을 다시 할당

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) 

모든 입력은 도움이 될 것입니다.

감사합니다 !!!

+0

글쎄, 'clinSig'가 사용되지 않을 것입니다. – user1993412

답변

9

메서드 매개 변수가 val이므로 다시 할당 할 수 없습니다. 새 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)