kotlin - Kotlin 中的非空检查有什么区别?
问题描述
有一些方法可以在 Kotlin 中完成空值检查:
1.
if(myVar != null) {
foo(myVar)
}
2.
myVar?.let {
foo(it)
}
3.
myVar?.run {
foo(this)
}
这些方式有什么区别?
有什么理由(性能、最佳实践、代码风格等)为什么我应该更喜欢其他方式?
解决方案
!!是告诉编译器我确定变量的值不为空,如果为空,则抛出空指针异常(NPE),其中为?。是告诉编译器我不确定变量的值是否为空,如果为空,则不要抛出任何空指针。
使用可为空属性的另一种方法是安全调用运算符?。如果属性不为 null,则调用该方法;如果该属性为 null,则返回 null,而不会引发 NPE(空指针异常)。
nullableVariable?.someMethodCall()
推荐阅读
- android - 在 Android Studio 中创建签名包时出错 - “其他”具有不同的根
- python - 在循环中连接来自数据框列的字符串(Python 3.8)
- python-3.x - 使用 OSMNX 下载一批便利设施
- java - JavaFX 8 CheckBox 序列化
- javascript - jquery函数没有注册更改
- c++ - 如何设置类(相关sfml游戏开发)
- node.js - Firebase 实时数据库订单数据并获取最后记录
- npm - 命令`yarn global add serve`一直不安装`serve`?
- reactjs - 为什么我来自 api 的数据仍未定义?
- html - XPath 连接两个孩子