Kotlin笔记10-空指针检查-非空断言工具!!.,let
5.2 空指针检查
- 非空断言工具
Example:
var content:String?="hello"
fun main1(){
if(content!=null){
printUpperCase()
}
}
fun printUpperCase(){
val upperCase= content.toUpperCase()
println(upperCase)
}
上面代码无法运行,函数不知道已经在外部进行非空检查
!!.
非空断言
fun printUpperCase(){
val upperCase= content!!.toUpperCase()
println(upperCase)
}
- let辅助函数
let: 提供函数式API接口
并将原始调用对象作为参数传递到Lambda表达式中,obj=obj2
obj.let { obj2 ->
//编写具体的业务逻辑
}
Example:
fun doStudy(study:Study?){
study?.readBooks()
study?.doHomework()
}
转化成if:
if(study!=null)
study.readBooks()
if (study!=null)
study.doHomework()
改用let:
study?.let {stu->
stu.readBooks()
stu.doHomework()
}
唯一参数,用it代替
study?.let {
it.readBooks()
it.doHomework()
}
全局判空优势
全局变量随时会被其他线程更改,let可以规避
var study:Study?=null
fun doStudy3(){
/* if(study!=null){
study.readBooks()
study.doHomework()
}*/
study?.let {
it.readBooks()
it.doHomework()
}
}