在 Kotlin 中實現空值檢查

Kailash Vaviya 2024年2月15日
  1. 在 Kotlin 中使用條件語句實現 Null 檢查
  2. 在 Kotlin 中使用安全呼叫實現 Null 檢查
  3. 使用 Elvis 運算子在 Kotlin 中實現 Null 檢查
在 Kotlin 中實現空值檢查

一些原始型別不接受 null 並丟擲錯誤。null 引用產生的錯誤可能導致應用程式失敗,甚至導致系統崩潰;因此,在執行程式之前檢查 null 引用至關重要。

Kotlin 允許我們以各種方式檢查 null。本文將教你如何在 Kotlin 中檢查 null 並防止出現 NullPointerException 錯誤。

在 Kotlin 中使用條件語句實現 Null 檢查

在 Kotlin 中檢查 null 的最簡單方法是使用條件語句。在這裡,我們可以使用條件運算子 ==!= 並相應地執行條件語句。

我們也可以使用 === 代替 ==!== 代替!=。結構等式 x == null 無論如何都被翻譯成指稱等式 x === null;因此,使用 == 還是 === 並沒有太大區別。

這是一個示例,展示了在 Kotlin 中使用條件語句進行 null 檢查。

fun main() {
    val x: String? = "Android"
    if (x != null && x.length > 0) {
        print("This is not null, its length is: ${x.length}")
    } else {
        print("This is a null string!")
    }
}

輸出:

使用條件語句進行 Kotlin 空值檢查

單擊此處檢視示例的演示。

現在,如果我們將值更改為 null,它將給出另一個輸出。

fun main() {
    val x: String? = null
    if (x != null && x.length > 0) {
        print("This is not null, its length is: ${x.length}")
    } else {
        print("This is a null string!")
    }
}

輸出:

在 Kotlin 中使用條件語句檢查 Null

單擊此處檢視示例的演示。

僅當使用 val 關鍵字宣告變數時,條件語句才有效。val 關鍵字使單詞不可變。

如果我們使用 var 變數,則在檢查 null 引用後變數的值可能會發生變化。

在 Kotlin 中使用安全呼叫實現 Null 檢查

安全呼叫是訪問 Kotlin 中 null 檢查的可空屬性的另一個選項。我們可以使用安全呼叫運算子 ?. 檢查表示式的結果。

根據表示式結果,我們可以執行進一步的語句。

這是一個例子。

fun main() {
    val v = "Android"
    val x: String? = null
    println(v?.length)
    println(x?.length)
}

輸出:

使用安全呼叫進行 Kotlin 空值檢查

單擊此處檢視示例的演示。

安全呼叫在建立鏈時特別有用。例如,我們可以寫:

a?.b?.c?.d

在上面的例子中,如果 a 不是 null,它將移動到 b。如果 b 不是 null,它將移動到 c,如果 c 不是 null,它將移動到 d

每當編譯器發現一個 null 值時,它就會停止執行並返回 null

使用帶有 let 函式的安全呼叫來處理 Kotlin 中的 Null

通常,如果列表的值之一是 null,編譯器會返回 null。但是,我們可以將 let 函式與安全呼叫結合起來,以僅對列表的非 null 值起作用。

例子:

fun main() {
    val myList: List<String?> = listOf("David", "Virat", "Steve", null)
    for (i in myList) {
        i?.let { println(it) } // prints only non-null values
    }
}

輸出:

將 let 函式與安全呼叫一起用於 Kotlin Null 檢查

單擊此處檢視示例的演示。

使用 Elvis 運算子在 Kotlin 中實現 Null 檢查

Kotlin null 檢查的另一個絕佳選擇是使用 Elvis 運算子 ?:。如果在引用中找到 null 值,它將返回非 null 或預設值。

有兩個表示式:在 Elvis 運算子的左側和右側。如果左側表示式的值不為 null,則運算子返回該值,但如果左側表示式為 null,則 Elvis 運算子返回右側表示式的值。

這裡的關鍵是 Elvis 運算子僅在左側表示式為 null 時才會執行右側的表示式。

例子:

fun main(args: Array<String>) {
    val i: String? = null
    val j: String = i ?: "Welcome! This is Kotlin Programming."
    // This print statement uses the Elvis operator
    println(i ?: j)
}

輸出:

使用 Elvis 運算子進行 Kotlin 空值檢查

單擊此處檢視示例的演示。

作者: Kailash Vaviya
Kailash Vaviya avatar Kailash Vaviya avatar

Kailash Vaviya is a freelance writer who started writing in 2019 and has never stopped since then as he fell in love with it. He has a soft corner for technology and likes to read, learn, and write about it. His content is focused on providing information to help build a brand presence and gain engagement.

LinkedIn