Почему Kotlin не может определить тип возвращаемого значения логического выражения, используя ==? - PullRequest
0 голосов
/ 06 ноября 2019

Насколько я понимаю, Kotlin должен иметь возможность выводить тип возвращаемого значения функции на основе последнего выражения, используемого в теле функции.

fun returnInt() {
    42 + 24
}

Однако, когда я создаю функцию, ожидающую результатоперации равенства (==), такой как:

fun returnBoolean() {
    someBool == otherBool
}

Я получаю следующее предупреждение:

Неиспользуемое выражение равно

Я могу разрешитьэто путем добавления типа возврата и оператора возврата:

fun returnBoolean(): Boolean {
    return someBool == otherBool
}

Но мне было просто интересно, почему returnBoolean() получает «Неиспользованное выражение равно», а returnInt() - нет.

1 Ответ

1 голос
/ 06 ноября 2019

Глупый я.

Kotlin может выводить такие утверждения, используя знак равенства в объявлении функции:

fun returnInt() =
    42 + 24


fun returnBoolean() =
    someBool == otherBool


Как новичок в Kotlin, мне интересно, что returnInt() не получает предупреждение, но если вы попытаетесь использовать его во время выполнения (в моем случае я передал его в качестве аргумента java.lang.String.format), он выдаст исключение.

...