0
点赞
收藏
分享

微信扫一扫

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


文章目录

  • ​​一、空合并操作符 ?:​​
  • ​​二、空合并操作符与 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

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






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


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



代码示例 :

fun main() {
var name: String? = null

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

println(name)
}

执行结果 :

Tom

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



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

对应代码如下 :

fun main() {
var name: String? = null

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

println(name)
}

执行结果 :

Jerry

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


举报

相关推荐

Kotlin 空安全

0 条评论