Kotlin позволяет использовать

Есть ли разница между этим фрагментом кода:

fun isDogEating(): Boolean {
    return dog?.let { return it.eating } ?: false
}

и это

fun isDogEating(): Boolean {
    return dog?.eating ?: false
}

Я наткнулся на что-то вроде первого и подумал, не является ли здесь лишним let.

0
0
713
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Отличий в поведении нет.

Обе функции возвращают false, если dog == null из-за ?: false в конце.

Функция let выполняется, только если dog != null. То же самое со свойством eating во втором примере.

Обратите внимание, что оператор return в лямбде let означает возврат из функции isDogEating, а не из лямбда! Чтобы вернуться из лямбды, можно использовать return@let или просто выражение

Я предпочитаю более короткую версию:

fun isDogEating() = dog?.eating ?: false

Как всегда отличный ответ, Евгений!

Nicola Gallazzi 19.02.2019 23:39

Я просто добавлю, что в этом случае возврат из isDogEating не влияет на результат, а в основном случайно.

Alexey Romanov 20.02.2019 09:06

Другие вопросы по теме