1

使用 kotlin 的object?.let {...}vs有什么区别if(object != null) {...}?我遇到了这样的情况,let在非空上使用等于 false 并且块没有被执行,但是使用if具有相同对象的语句会导致正确识别对象非空并且块被执行。

它们在低层次上是否有所不同?

4

2 回答 2

0

在引擎盖下,object?.let { }将被编译为if (object != null) { }. 您可以尝试检查 kotlin 字节码。

恕我直言,使用let也可能使您受益于使您的代码声明性的链接函数,并且我认为它更具可读性。

于 2021-11-29T01:40:19.060 回答
-1

let当您阅读还包含空值的项目列表并且您只想打印非空值时,最好使用关键字的场景之一。例如:-

var array = arrayOf("StackOverflow", "Kotlin", "Android", null, "Jetpack", null)
for (item in array) {
    item?.let {
        print("$it ")
    }
}

输出:

StackOverflow Kotlin Android Jetpack

for 循环中的代码就像说“如果项目不为空,让我们打印它的值”。因此?.let,您可以为非空值运行代码。

于 2021-11-28T07:05:18.753 回答