【Kotlin 入門指南】系列文章目錄:https://bit.ly/3t8awwL
Kotlin 線上課程教學影片:https://bit.ly/3qJ5a5Q
takeIf
與 takeUnless
函數在 Kotlin 程式語言中,提供了一種更具彈性和簡潔的方式來處理條件性邏輯。它們讓程式碼更易讀、更容易維護,同時減少了不必要的重複代碼。藉由善用這兩個函數,你能夠提升自己的程式撰寫效率,寫出更具可讀性且高效的 Kotlin 程式碼。
條件符合返回值,不符合則返回null。
//條件符合返回物件
val x = 66.takeIf { it == 66 } //66
//條件不符合則返回null
val y = 66.takeIf { it == 5 } //null
takeIf
這個函數的功能在於根據條件來選擇性地返回值。它接收一個條件式作為參數,如果條件成立,則返回原始值,否則返回 null
。這樣的設計允許你以更簡潔的方式進行條件性的值處理,讓程式碼更為精簡易讀。
在這個範例程式碼中,takeIf
函數被使用來檢查特定條件。當我們將 66
作為呼叫者時,並利用大括號 {}
內的表達式來檢查數值是否符合條件。如果條件符合,則 takeIf
函數將返回原始數值;反之,如果條件不符合,則會返回 null
。
在這個例子中,x
被賦予了 66
,因為 66
符合條件 it == 66
,而 y
則被賦予了 null
,因為 66
並不等於 5
,所以條件不符合。
這個函數在處理條件檢查時非常有用,尤其是當你想要根據特定條件來取得數值或者檢查數值是否符合預期條件時。
條件符合返回 null,不符合返回物件
//條件符合返回 null
val x = 10.takeUnless { it == 10 } //null
//條件不符合返回物件
val y = 10.takeUnless { it == 5 } //10
takeUnless
這個函數與 takeIf
相反,它在條件不成立時返回原始值,否則返回 null
。這在某些情況下能夠使得程式碼更直觀,特別是在需要排除特定條件的情況下。
在這個範例程式碼中,我們有兩個變數 x
和 y
,它們分別呼叫了 takeUnless
函數並傳入不同的條件。讓我們來看看這兩行程式碼的執行結果:
val x = 10.takeUnless { it == 10 }
: 這行程式碼的意思是若 it
(這裡指的是 10)等於 10,則返回 null
;然而,實際上 it
的值就是 10,因此條件符合,x
最終被賦值為 null
。val y = 10.takeUnless { it == 5 }
: 在這行程式碼中,條件是若 it
不等於 5,則返回原始物件。因為 it
的值是 10,不等於 5,所以條件不符合,最終 y
被賦值為原始的物件值,也就是 10。