根据Kotlin文档,?运算符表示"安全调用",这意味着如果它在方法调用链中使用,则整个链将返回null,如果它使用的任何值的值为null.
但是,如果在作业的左侧使用它呢?由于左侧不是"返回"任何东西,它似乎可能有不同的效果.这是我正在谈论的一个例子:
val myObj = SomeObj()
myObj?.property = SomeClass.someFunc() // What does ?. do in this context?
Run Code Online (Sandbox Code Playgroud)
hot*_*key 28
这意味着如果左侧的其中一个安全调用失败(即其接收方为空),则跳过整个赋值,并且根本不评估右侧的表达式.
val nullable: Container? = null
nullable?.x = f() // f is not called
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1161 次 |
| 最近记录: |