2011-07-28 6 views
1

다음 이유는 무엇입니까?잘못된 컴파일 시간 오류

scala> val ch1 = 'a' + 'b' 
ch1: Int = 195 

그러나 다음은 무엇입니까?

scala> var ch1 = 'a' 
ch1: Char = a 

scala> ch1 += 'b' 
<console>:9: error: type mismatch; 
found : Int 
required: Char 
     ch1 += 'b' 
     ^

scala> ch1 = ch1 + 'b' 
<console>:8: error: type mismatch; 
found : Int 
required: Char 
     ch1 = ch1 + 'b' 
       ^

왜 오류 메시지가 오도 할 것입니까? 왜 내가 지나가는 것이 Char 일 때 required: Char라고 말하는가?

답변

7

CharChar을 추가하면 결과는 Int입니다.

scala> 'a' + 'c'  
res2: Int = 196 

이는 오류 메시지의 "발견 된"부분입니다.

2

예상대로 작동하는 것으로 ch1에 주석을 추가하면 여기서 컴파일러를 도와야 할 것 같습니까? 문제는 당신의 의도가 컴파일러에 의해 잘못 읽은 것 같아요 :) Char를 선언하여 int 값을 얻는다면 다른 Int를 추가하는 것이 어떻게 알 수 있습니까? 할당 후에 변수의 유형을 변경하려는 경우 어떻게해야합니까? 그래서 var ch1 : Int = 'a'로 시작하면됩니다.