Kotlin判空辅助工具

1)?.操作符

Kotlin 复制代码
//执行逻辑
if (person != null) {
    person.doSomething()
}
//表达式
person?.doSomething()

2)?:操作符

Kotlin 复制代码
//执行逻辑
val c = if (a != null) {
    a
} else {
    b
}
//表达式
val c = a ?: b

3)!!表达式

Kotlin 复制代码
var message: String? = "Hello!"

fun main() {
    if (message != null) {
        printUpperCase()
    }
}

fun printUpperCase() {
     println(message!!.toUpperCase())
}

/*解释:此处message为可空类型,但在主函数中已进行空值判定;
因而在调用printUpperCase方法时,message不可能为空值;
故而在其末尾加上!!操作符,知会编译器此处不再做空值检查*/

4)let函数

let函数搭配是?.操作符,在存在多次调用时,可以显著减少目标对象的调用次数

Kotlin 复制代码
fun study(student: Student) {
    student?.let {
        it.preview()
        it.takeNotes()
        it.review()
    }
}

/*解释:这里在?.操作符判定student不为空值后,
调用let函数并将student作为参数传入Lambda表达式*/
相关推荐
薛定猫AI14 小时前
【深度解析】GLM-5.2 与 Z-Code:AI 编程智能体的原理拆解与 Python 调用实战
开发语言·人工智能·python
没文化的阿浩14 小时前
【C++】详解继承机制
开发语言·c++
文祐15 小时前
C语言用双向链表实现单调递减(递增)队列
c语言·开发语言·链表
雪的季节15 小时前
OCR: windows 环境基于c++的 paddle ocr 编译【CPU版本】编译成dll ,在QT、VS中调用
开发语言
帅次15 小时前
Android 高级工程师面试:Kotlin 语法基础 近1年高频追问 22 题
android·面试·kotlin·扩展函数·空安全
蒟蒻的贤15 小时前
python搭建MiniDL
开发语言·python·深度学习
aaPIXa62215 小时前
C++模板元编程:在编译期完成计算,实现零运行时开销
java·开发语言·c++
夜郎king15 小时前
RuoYi-Vue3 企业级后台快速落地实战指南
java·开发语言
江华森16 小时前
exp01_Python_数据类型
开发语言·python
希冀12316 小时前
【JavaScript】Javascript—JS进阶—Day03
开发语言·javascript·原型模式