根据Kotlin docs , 这 ?。运算符表示“安全调用”,这意味着如果在方法调用链中使用它,如果它使用的任何值都为 null,则整个链将返回 null。
但是如果它用在作业的左侧呢?由于左侧不是“返回”任何东西的一侧,因此它似乎可能具有不同的效果。这是我所说的一个例子:
val myObj = SomeObj()
myObj?.property = SomeClass.someFunc() // What does ?. do in this context?
最佳答案
这意味着如果左侧的安全调用之一失败(即它的接收者为空),则整个赋值被跳过,右侧的表达式根本不计算。
val nullable: Container? = null
nullable?.x = f() // f is not called
(runnable demo)
https://stackoverflow.com/questions/44590682/
相关文章:
java - 错误 :Kotlin: Unsupported plugin option: org.
android - 应用程序模块中引用的 android 库模块的“ Unresolved 引用”错
android - 为全屏 Activity 摆脱不必要的根布局
kotlin - 在 Kotlin 中对可空整数使用 "greater than"、 "less t
android - 如何混淆我用 kotlin 编码的 sdk(并摆脱元数据)
android - kotlin 'onCreate' 不会覆盖任何内容