安全呼叫运算符
要访问可空类型的函数和属性,必须使用特殊运算符。
第一个,?.
,为你提供你尝试访问的属性或函数,或者如果对象为 null,则为 null;
val string: String? = "Hello World!"
print(string.length) // Compile error: Can't directly access property of nullable type.
print(string?.length) // Will print the string's length, or "null" if the string is null.
成语:在同一个 null 检查对象上调用多个方法
调用 null 检查对象的多个方法的一种优雅方法是使用 Kotlin 的 apply
, 如下所示:
obj?.apply {
`foo()`
`bar()`
}
只有当 obj
为非空时,才会在 obj
(apply
块中的 this
)上调用 foo
和 bar
,否则将跳过整个块。
要将可空变量作为非可空引用放入作用域而不使其成为函数和属性调用的隐式接收器,可以使用 let
而不是 apply
:
nullable?.let { notnull ->
`notnull.foo()`
`notnull.bar()`
}
notnull
可以被命名为任何东西,甚至可以通过隐含的 lambda 参数 it
省略和使用。