Scala Char自动转换为Integer



Char自动转换为Integer。为什么会发生从char到Int的转换?我希望res2的数据类型是anyVal。

val achar = 'a'
if (b > 12) 12 else achar
res2: Int = 97

这是因为您在true分支中返回Int值。Scala使用这些基本数据类型的行为就像java一样(类通过编译器转换为基本类型)。因此,if的返回类型可以是char或int(12是整数,因为数字字面值总是整数)。由于char类型不能包含所有int类型,所以编译器会"强制转换"。将char转换为int。如果您将12转换为像这样的字符:

val achar = 'a'
if (b > 12) 12.asInstanceOf[Char] else achar

它将返回一个char。

最新更新