Почему следующее компилируется?
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'
^
И почему сообщение об ошибке такое вводящее в заблуждение? Почему там написано required: Char, когда то, что я прохожу, явно Char?
Ответ 1 · рейтинг 7 · n. 1.8e9-where's-my-share m.
Когда вы добавляете Char и еще один Char, результатом будет Int.
scala> 'a' + 'c'
res2: Int = 196
Это "найденная" часть сообщения об ошибке.
Ответ 3 · рейтинг 2 · AndreasScheinert
Я думаю, вы должны помочь компилятору, если вы аннотируете ch1 как Int, он работает, как ожидалось? Проблема в том, что я предполагаю, что компилятор неправильно понял ваше намерение :) Как он должен знать, что вы объявляете Char, чтобы получить его значение int, чтобы добавить еще один Int, если это так? Вы пытаетесь изменить тип переменной после присваивания, как это должно работать? Итак, начните с var ch1:Int='a', и это сработает.