使用kotlin的object?.let {...}与使用if(object != null) {...}有什么不同?我遇到过这样的情况:在非null上使用let等同于false,块不会被执行,但是对相同的对象使用if语句会正确地识别出对象是非null的,并且块会被执行。
它们在低层次上有什么不同吗?
发布于 2021-11-29 01:40:19
在幕后,object?.let { }将被编译成if (object != null) { }。您可以尝试检查kotlin字节码。
我的意思是,使用let还可以帮助你链接函数,这使得你的代码具有声明性,而且我认为它更具可读性。
发布于 2021-11-28 07:05:19
当您正在读取也包含NULL值的项目列表并且希望仅打印非NULL值时,let关键字是首选方案之一。例如:
var array = arrayOf("StackOverflow", "Kotlin", "Android", null, "Jetpack", null)
for (item in array) {
item?.let {
print("$it ")
}
}输出:
StackOverflow Kotlin Android Jetpackfor循环中的代码就像是在说“如果item不为null,让我们打印它的值”。因此,?.let允许您为非空值运行代码。
https://stackoverflow.com/questions/51291427
复制相似问题