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










