Различий в поведении нет.
Обе функции возвращают false
, если dog == null
, из-за ?: false
в конце.
Функция let
доступна тольковыполняется, если dog != null
.То же самое со свойством eating
во втором примере
Обратите внимание, что оператор return
в лямбде let
означает возврат из функции isDogEating
, а не из лямбды!Чтобы вернуться из лямбды, можно использовать return@let
или просто выражение
Я предпочитаю более короткую версию:
fun isDogEating() = dog?.eating ?: false