我目前正在尝试Kotlin,这里有一个简单的示例:
var byteToAdd: Byte = 3
var byteArray = byteArrayOf(1, 2, 3, 4, 5)
byteArray[0] += byteToAdd
println(byteArray[0])
但是执行时,在第3行出现错误,因为它说byteToAdd
是Integer
,即使我将byteToAdd
的类型设置为Byte
在第1行。
为什么会这样?
答案 0 :(得分:7)
带有+=
运算符的这一行等效于此较长的调用-如果您在运算符上调用它,则实际上可以在IntelliJ中的两个有意动作之间进行转换:
byteArray[0] = byteArray[0].plus(byteToAdd)
这里的问题是您在Byte
上调用的plus
运算符返回了Int
(我假设是因为不能保证结果会适合{{ 1}}),无法将其隐式转换回Byte
并重新放入数组中。
您可以使用以下较长的语法来解决此问题,和将结果再转换回Byte
:
Byte