使用 kotlin 的object?.let {...}
vs有什么区别if(object != null) {...}
?我遇到了这样的情况,let
在非空上使用等于 false 并且块没有被执行,但是使用if
具有相同对象的语句会导致正确识别对象非空并且块被执行。
它们在低层次上是否有所不同?
使用 kotlin 的object?.let {...}
vs有什么区别if(object != null) {...}
?我遇到了这样的情况,let
在非空上使用等于 false 并且块没有被执行,但是使用if
具有相同对象的语句会导致正确识别对象非空并且块被执行。
它们在低层次上是否有所不同?
在引擎盖下,object?.let { }
将被编译为if (object != null) { }
. 您可以尝试检查 kotlin 字节码。
恕我直言,使用let
也可能使您受益于使您的代码声明性的链接函数,并且我认为它更具可读性。
let
当您阅读还包含空值的项目列表并且您只想打印非空值时,最好使用关键字的场景之一。例如:-
var array = arrayOf("StackOverflow", "Kotlin", "Android", null, "Jetpack", null)
for (item in array) {
item?.let {
print("$it ")
}
}
输出:
StackOverflow Kotlin Android Jetpack
for 循环中的代码就像说“如果项目不为空,让我们打印它的值”。因此?.let
,您可以为非空值运行代码。