安全调用
可以使用安全调用操作符-- ?.
b?.length
如果b不为空则返回b.length,否则返回null。表达式的类型就是Int?。
安全调用在链式调用时很有用。比如,如果Bob,一个雇员,被委派到一个部门,这样的话可能会返回另一个部门的雇员,现在为了获取新雇员的名字,我们可以这样写:
bob?.department?.head?.name
这样的链式调用如果所有的属性都为空,那么最终的返回将会为空。
为了执行非空值的特定操作,你可以使用在安全调用中搭配let一起使用。
val listWithNulls: List<String?> = listOf("A", null)
for (item in listWithNulls) {
item?.let { println(it) } // prints A and ignores null
}