Kotlin 'let' 用法

Kotlin 'let' usage

这段代码有区别吗:

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

还有这个

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

我遇到了类似第一个的问题,想知道这里的 let 是否多余。

行为上没有差异。

两个函数 return false if dog == null,因为最后的 ?: false

let函数仅在dog != null时执行。 同第二个例子中的eating 属性

请注意 let lambda 中的 return 语句表示 return 来自 isDogEating 函数,而不是来自 lambda!从 lambda 到 return 可以使用 return@let 或只是表达式

我更喜欢较短的版本:

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