延續前一天的討論,前一天討論的都是變數的 null 處理,今天來討論 object 對 null 的處理!
但若是特殊場合必須為 null 呢, kotlin 也是有提供特殊符號來允許指定的 type nullable 。
? : Nullable Type
!! : Not-null assertions
當我們今天宣告的 type 是可以為 null 時,在 type 後加個 ? ,後續賦予 null 就不會報錯了。
以上是變數的 nullable ,而物件也可以使用 ? !! 兩個符號,接下來介紹一下物件使用的方式。
fun main() {
car?.drive()
}
既然 car 有個 ? ,表示 car 可能為 null 可能為 NotNull ,而這兩種情形所 return 的東西會不一樣。讓我們來看看這一行簡單程式碼是怎麼運行的吧!
若 car 不為 null ,則會正常執行 drive 。
若 car 為 null ,則會 return null 。
若要翻譯成用 if..else 的話。
fun main() {
if (car != null) {
car.drive()
}
}
而 !! 也是用來處理 null 的符號,這是在告訴 IDE ,我非常確定我所傳入的值絕非 null ,而 IDE 就不會去做 null check ,但若使用了 !! 但卻沒有管控好不小心為 null ,則會和一開始的 Java 一樣報錯了。
Kotlin 語法討論告一段落,剩下的篇幅將會留給 Andriod ,介紹一些 Android 的元件,後續會再帶一些實作!