一般来讲,引用传来的指针之前,需要进行空指针检查。
很多语言并没有空指针保护,比如C++ java。
但是系统复杂,开发人员多了之后,难免会出现引用空指针问题。
如果网络检查,引用空指针,系统就会跑飞。
但是,Kotlin默认所有参数和变量不可为空,可以杜绝空指针风险。
在编译时,就会进行空指针检查。从而修正空指针问题。
如果遇到必须使用空指针或者空变量,可以使用可为空
类型。
可为空类型是在类型类后面加上?
。例如:Int?
。
在对声明为?
的类型进行引用时,IDE会提示进行判空。
kotlin还提供了一些判空语法糖。
?.
:左侧对象不为空就正在执行右边的方法,为空就什么都不做。
?:
:左侧不为空就返回左侧被判空表达式的结果,为空就返回右边表达式结果
fun getTextLength(text: String?) = text?.length ?: 0
text如果为空,text?.length就什么都不做,表达式的值为NULL,然后整个表达式的值就变为了0.
对象的let
标准函数与判空结合,简化?.
判断:
之前使用?.
的时候,相当于每次操作都进行了一次空指针判断。可以用let
结合λ表达式来简化。
let
是对象标准函数,会把当前对象传入后面的λ表达式中。
mycar?.let{
it.run()
it.charge()
}