Kotlin空安全 ④ ( 手动空安全管理 | 空合并操作符 ?: | 空合并操作符与 let 函数结合使用 )

Posted 韩曙亮

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Kotlin空安全 ④ ( 手动空安全管理 | 空合并操作符 ?: | 空合并操作符与 let 函数结合使用 )相关的知识,希望对你有一定的参考价值。

文章目录





一、空合并操作符 ?:



空合并操作符 ?: 用法 :

表达式 A ?: 表达式 B

如果 表达式 A 的值 不为 null , 则 整个表达式的值 就是 表达式 A 的值 ;

如果 表达式 A 的值 为 null , 则 整个表达式的值 就是 表达式 B 的值 ;


代码示例 : 在下面的代码中 ,

name 变量 被声明为 String? 可空类型的变量 , 为其赋值为 null ,

使用 name ?: "name 变量为空" 代码 , 其效果如下 :

空合并操作符 左侧的 name 表达式如果为 null , 则 取 右边的 表达式 作为该表达式最终的值 ,

如果 左侧的 name 表达式 不为 null , 则 取 该 name 变量作为 该表达式最终的值 ;

因此 , 第一次使用 name ?: "name 变量为空" 代码时 , name 为空 , 整个表达式 name ?: "name 变量为空" 返回的是 "name 变量为空" 值 , 打印出来的就是 name 变量为空 内容 ;

之后 为 name 变量赋值 "Tom" 字符串值 , 现在 name 变量不为空 , 使用 name ?: "name 变量为空" 代码返回的是 name 变量的值 , 因此打印出来的就是 Tom 内容 ;

fun main() 
    var name: String? = null
    println(name ?: "name 变量为空")

    name = "Tom"
    println(name ?: "name 变量为空")

执行结果 :

name 变量为空
Tom





二、空合并操作符与 let 函数结合使用



空合并操作符 ?:let 函数 结合使用 , 可以 替代 if .. else .. 语句 ;


代码示例 :

fun main() 
    var name: String? = null

    name = "tom"
    name = name?.let 
        it.capitalize()
     ?: "Jerry"

    println(name)

执行结果 :

Tom


如果 name 变量为 null , 则 ?: 表达式中 , 会选择 ?: 后面的表达式作为最终结果 ;

对应代码如下 :

fun main() 
    var name: String? = null

    name = name?.let 
        it.capitalize()
     ?: "Jerry"

    println(name)

执行结果 :

Jerry

以上是关于Kotlin空安全 ④ ( 手动空安全管理 | 空合并操作符 ?: | 空合并操作符与 let 函数结合使用 )的主要内容,如果未能解决你的问题,请参考以下文章

Kotlin空安全 ③ ( 手动空安全管理 | 非空断言操作符 !! | 使用 if 语句判空 )

Kotlin空安全总结 ( 变量可空性 | 手动空安全管理 | 空安全调用操作符 | 非空断言操作符 | 空合并操作符 | 空指针异常处理 | 先决条件函数判空 )

Kotlin空安全 ① ( Kotlin 的空安全机制 | 变量可空性 | 默认变量不可赋空值 | 声明可空类型变量 )

Kotlin入门到精通(实战)- 空安全和实战技巧

Kotlin入门到精通(实战)- 空安全和实战技巧

Kotlin学习总结——空安全和集合