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

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

时间:2023-01-28 12:02:36浏览次数:37  
标签:name Kotlin 合并 操作符 为空 null 表达式 变量


文章目录

  • ​​一、空合并操作符 ?:​​
  • ​​二、空合并操作符与 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 函数结合使用 )_kotlin






二、空合并操作符与 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 函数结合使用 )_kotlin_03


标签:name,Kotlin,合并,操作符,为空,null,表达式,变量
From: https://blog.51cto.com/u_14202100/6024907

相关文章

  • 【Kotlin】空安全 ③ ( 手动空安全管理 | 非空断言操作符 !! | 使用 if 语句判空 )
    文章目录​​一、非空断言操作符!!​​​​二、使用if语句判空​​一、非空断言操作符!!Kotlin中的可空类型变量,在运行时可以选择不启用安全调用操作,在调......
  • [转]利用python的PyPDF2和PyMuPDF库玩转PDF的提取、合并、旋转、缩放、加密
    本文转自:https://www.cnblogs.com/steven0325/p/16888425.html一、安装PyPDF2和PyMuPDF库pipinstallPyPDF2pipinstallpymupdf#fitz是pymupdf的子模块二、工具......
  • 88. 合并两个有序数组
    题目描述给你两个按非递减顺序排列的整数数组nums1和nums2,另有两个整数m和n,分别表示nums1和nums2中的元素数目。请你合并nums2到nums1中,使合并后的数......
  • 操作符介绍
    算数操作符移位操作符位操作符赋值操作符单目操作符关系操作符逻辑操作符条件操作符逗号操作符下标引用、函数调用和结构成员算数操作符+-*/%1./如果一边或两边有浮点数......
  • 浅谈树上启发式合并(Dsu on tree)
    树上启发式合并树上启发式合并(Dsuontree),是一个解决树上离线问题的有力算法,一般的复杂度是\(\mathcalO(n\logn)\)(假定转移可以\(\mathcalO(1)\)解决),时间复杂度相比......
  • git 合并仓库
    需求仓库A正常使用,现在找到一些仓库A使用之前的数据,希望把这些数据也放到仓库中,并有相关记录。解决方法如果A提交不多,那就把仓库从头开始提交数据使用rebase-......
  • 【Kotlin】空安全 ① ( Kotlin 的空安全机制 | 变量可空性 | 默认变量不可赋空值 | 声
    文章目录​​一、Kotlin的空安全机制​​​​二、变量可空性​​​​1、默认变量不可赋空值​​​​2、声明可空类型变量​​一、Kotlin的空安全机制Java中的空指针问题......
  • 合并代码注意事项
      如果当前文件有代码冲突,就会如上图那样显示。中间一长串等于号把上下分成两部分,上面绿色部分是当前代码,下面蓝色部分是传入的别人的代码。是要绿色还是要蓝色自己决......
  • JavaScript 对象合并
    JavaScript中有多种方法可以合并对象。1、使用Object.assign()方法:它可以将一个或多个对象的属性复制到目标对象中。例如:constobj1={a:1,b:2};constobj2=......
  • JavaScript 数组合并
    JavaScript中有多种方法可以将多个数组合并成一个数组。1、使用Array.prototype.concat()合并:concat()方法可以将多个数组合并成一个新数组。letarr1=[1,2,3];......