Menu
CoddyTech

Elvis 运算符

本课属于 Coddy Kotlin 学习旅程的“基础知识”单元。第 15 课,共 93 课。

安全调用运算符有助于避免程序崩溃,但有时你需要一个实际值,而不是 null。Elvis 运算符 ?: 可以在表达式为 null 时提供默认值。

语法很简单:在可空表达式后面放置 ?:,再接上备用值:

fun main() {
    val name: String? = null
    val displayName = name ?: "Guest"
    println(displayName)  // 输出:Guest
}

如果左侧不为 null,就使用该值。如果左侧为 null,右侧就成为结果。这与安全调用配合使用非常合适:

fun main() {
    val text: String? = null
    val length = text?.length ?: 0
    println(length)  // 输出:0
    
    val greeting: String? = "Hello"
    val greetingLength = greeting?.length ?: 0
    println(greetingLength)  // 输出:5
}

这个运算符之所以得名,是因为从侧面看,?: 像猫王的发型。更重要的是,它能让你用合理的默认值,将可空类型转换为非空值。

challenge icon

挑战

简单

包裹有一个可选的跟踪标签和一个可选的目的地。起始代码提供了这两个可空值。使用 ?:,在跟踪标签缺失时选择 "Pending",在目的地缺失时选择 "Unassigned"。分别在单独的行上打印选定的标签和目的地。

亲手试试

fun main() {
    val trackingLabel: String? = null
    val destination: String? = "Harbor"
    // 选择并打印两个用于显示的值。
}
quiz icon自我测试

这节课包含一个小测验。开始学习即可作答,并记录你的进度。

基础知识中的所有课

自己练习: Kotlin 在线编辑器