安全呼叫運算子
要訪問可空型別的函式和屬性,必須使用特殊運算子。
第一個,?.
,為你提供你嘗試訪問的屬性或函式,或者如果物件為 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
省略和使用。