gpt4 book ai didi

带安全运算符的 Kotlin 非空断言

转载 作者:行者123 更新时间:2023-12-02 19:02:53 25 4
gpt4 key购买 nike

为什么这段代码给我带来 NPE 错误?

fun main() {
val myObj: MyObj? = null
print(myObj?.someVal!!)
}

class MyObj{
val someVal = 1
}

非空断言之前是否计算整个表达式?我认为 myObj? 应该足以在此处打印 null。

最佳答案

是的。当您使用 null 安全调用时,如果接收者为 null,则表达式将计算为 null,因此

myObj?.someVal!!

行为与

相同
(if (myObj != null) myObj.someVal else null)!!

(如果 myObj 是属性而不是局部变量,则它们不等效,因为智能转换不起作用。)

关于带安全运算符的 Kotlin 非空断言,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65358359/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com