当前位置: 首页>后端>正文

kotlin - 与 -- 区别

fun main() {
var str = ""
var str2: String= null

if (str2 != null){
    str = str2
}else{
    str = "NULL"
}

//上面if代码等价如下
str = str2?:"NULL"

}

来之gpt3.5的回答

在 Kotlin 中,?:? 都与可空类型(nullables)相关,但它们用于不同的场景。

  1. ?: 操作符:空合并操作符(Elvis 操作符)
    ?: 操作符用于处理可空表达式。当我们有一个可空的引用时,?: 操作符可以用来指定一个“当左侧表达式的结果为 null 时使用的默认值”。这个操作符常常用于简化 null 检查的代码。

    例如:

    val name: String= null
    val nameToPrint = name ?: "Unknown" // 如果 name 为 null,则使用 "Unknown"
    println(nameToPrint) // 输出 "Unknown"
    

    在这里,如果 namenull,则 nameToPrint 会被赋值为 "Unknown",否则 nameToPrint 将被赋值为 name 的值。

  2. ? 操作符:可空类型操作符和安全调用操作符

    • 作为可空类型操作符,? 放在类型后面表示该变量可以持有 null 值。
    • 作为安全调用操作符,? 放在变量后面用于在该变量可能为 null 的情况下安全地调用其方法或属性。如果变量为 null,则不执行调用,直接返回 null

    例如:

    val name: String= null
    println(name?.length) // 使用 安全调用,name 为 null,所以不会调用 length,输出为 null
    

总结一下,?: 是用于提供一个在表达式结果为 null 时的默认值,而 ? 用于声明一个变量可以为 null 或者用于在链式调用中安全地访问一个可能为 null 的对象的成员。


https://www.xamrdz.com/backend/35z1929042.html

相关文章: