Использование Kotlin 'let' - PullRequest
0 голосов
/ 20 февраля 2019

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

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

и этим

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

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

1 Ответ

0 голосов
/ 20 февраля 2019

Различий в поведении нет.

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

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

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

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

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