【Kotlin 入門指南】系列文章目錄:https://bit.ly/3t8awwL
Kotlin 線上課程教學影片:https://bit.ly/3qJ5a5Q
在 Kotlin 程式語言中,透過 let 可對可為空的物件做非空檢查,然後將該物件傳遞至 Lambda 表達式中作為參數。在 Lambda 中,你可以使用特定名稱(如 it)來操作該物件,而不必每次都使用原始變數名稱。
在這個範例中,檢查 str
資料值是不是 null,不是 null 非空值 ,才執行大括號內的邏輯程式區塊。這使得我們可以安全地訪問 str
的屬性和方法,而無需擔心 null 引用造成不可預期的錯誤。
fun main() {
var str: String? = "HKT線上教室"
// str = null
str?.let {
println(it)
println(it.length)
}
}
在這個範例中,我們將 listOf(1, 2, 3).first()
的結果傳遞給了 let 區域函數,它允許我們以更簡潔的方式對 it
進行操作並返回新的計算結果。
fun main() {
val getFirstNum = listOf(1, 2, 3).first().let {
println(it) //1
it * 666
}
println(getFirstNum) //666
}
let 區域函數可以取代 if/else 的使用,讓程式碼更為精簡。在這個範例中,展示如何使用 let 區域函數取代 if/else 檢查。如果 userName
不為 null,則返回"哈囉~ $userName",否則返回"尚未登入"。這種方式使程式碼更加簡潔易讀。
//使用 if/else
fun login1(userName: String?): String {
return if (userName != null) {
"哈囉~ $userName"
} else {
"尚未登入"
}
}
//使用 let 改寫 if/else
fun login2(userName: String?): String {
return userName?.let {
"哈囉~ $it"
} ?: "尚未登入"
}
fun main() {
println(login1(null))
println(login1("HKT線上教室"))
println(login2(null))
println(login2("HKT線上教室"))
}
在這個範例中,展示了如何使用 let 區域函數來處理 Android 中的 TextView 物件。避免了反覆進行 null 檢查,使得程式碼更為簡潔清晰。
val textView : TextView = findViewById(R.id.textView)
//未使用 let 區域函數,每次使用都要「?.」判斷是否為 null
textView?.text = "HKT線上教室"
textView?.setTextColor(Color.parseColor("#ffd700"))
textView?.textSize = 66f
//使用 let 區域函數
textView?.let {
it.text = "HKT線上教室"
it.setTextColor(Color.parseColor("#ffd700"))
it.textSize = 66f
}
let 區域函數是 Kotlin 中一個非常實用的工具,特別適用於處理可空對象。它讓程式碼更加簡潔、安全,同時提高了可讀性。透過 let 區域函數,我們可以更優雅地處理可空性問題,使得程式開發更加高效順暢。