0
点赞
收藏
分享

微信扫一扫

【Kotlin】Kotlin笔记10-空指针检查(非空断言工具!!.,let)


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()
}
}


举报

相关推荐

Kotlin 空安全

Kotlin - 可空类型

0 条评论