这段代码之间是否有区别:
fun isDogEating(): Boolean {
return dog?.let { return it.eating } ?: false
}
还有这个
fun isDogEating(): Boolean {
return dog?.eating ?: false
}
我碰到了第一个,想知道let
在这里是否多余。
答案 0 :(得分:4)
行为上没有差异。
由于false
结尾,两个函数都返回dog == null
,如果?: false
。
let
函数仅在dog != null
时执行。
与第二个示例中的eating
属性相同
请注意,return
lambda中的let
语句意味着要从isDogEating
函数而不是lambda返回!要从lambda返回,可以使用return@let
或仅使用表达式
我希望使用简短的版本:
fun isDogEating() = dog?.eating ?: false