Почему арифметические операции над байтами возвращают int в kotlin? - PullRequest
0 голосов
/ 17 октября 2018

Рассмотрим этот код:

val x1: Byte = 0x00
val x2: Byte = 0x01
val x3: Byte = x1 + x2;

Это дает ошибку компиляции, потому что результатом добавления 2 Byte s является Int.

Чтобы обойти это, мне нужно вручную привести результат обратно в байт:

val x3: Byte = (x1 + x2).toByte()

Это очень нелогично.Почему арифметические операторы работают так?

1 Ответ

0 голосов
/ 17 октября 2018

Это очень нелогично.Почему арифметические операторы работают так:

Это также точная копия семантики Java.В Java нет байт-кода для добавления двух byte с, char с или short с.Хотя Kotlin мог бы решить изменить семантику и создать более сложный байт-код, выбор в пользу соответствия Java имеет свои достоинства.

Аналогичный вопрос будет: "Почему Byte тип со знаком?"и ответ будет аналогичным.Kotlin предназначен для того, чтобы чувствовать себя знакомым опытным Java-разработчикам.

...