var nullableStr: String? = "hello"
// 使用安全调用操作符?. 来避免空指针异常
val result = nullableStr?.let {
// 如果nullableStr不为空,执行字符串拼接操作
it + " world"
} ?: "default value" // 如果nullableStr为空,使用默认值
println(result)
空安全机制特性解释
- 安全调用操作符
?.
:如果对象不为空,它允许你调用对象的方法或访问对象的属性。在上述代码中,nullableStr?.let
意味着如果 nullableStr
不为空,就执行 let
块中的代码;如果为空,则直接跳过 let
块,执行 ?:
之后的默认值表达式。
let
函数:用于在对象不为空时对其进行操作。它将对象本身作为参数传递给 let
块内的代码,在这里我们可以对 nullableStr
进行字符串拼接操作。
- Elvis 操作符
?:
:当安全调用操作符 ?.
返回 null
时,?:
操作符提供了一种返回默认值的方式。如果 nullableStr
为空,result
将被赋值为 "default value"
。