更新於 2024/12/07閱讀時間約 5 分鐘

【Kotlin 入門指南】kotlin 區域函數 (Scope functions) - let

【Kotlin 入門指南】系列文章目錄:https://bit.ly/3t8awwL
Kotlin 線上課程教學影片:https://bit.ly/3qJ5a5Q

let

在 Kotlin 程式語言中,透過 let 可對可為空的物件做非空檢查,然後將該物件傳遞至 Lambda 表達式中作為參數。在 Lambda 中,你可以使用特定名稱(如 it)來操作該物件,而不必每次都使用原始變數名稱。

let 區域函數,使用時機一

在這個範例中,檢查 str 資料值是不是 null,不是 null 非空值 ,才執行大括號內的邏輯程式區塊。這使得我們可以安全地訪問 str 的屬性和方法,而無需擔心 null 引用造成不可預期的錯誤。

fun main() {
var str: String? = "HKT線上教室"
// str = null

str?.let {
println(it)
println(it.length)
}
}

let 區域函數,使用時機二

在這個範例中,我們將 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 的使用,讓程式碼更為精簡。在這個範例中,展示如何使用 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 區域函數功能表

let 區域函數功能表

let 區域函數,在 Android 應用實戰範例

在這個範例中,展示了如何使用 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 區域函數,我們可以更優雅地處理可空性問題,使得程式開發更加高效順暢。

分享至
成為作者繼續創作的動力吧!
© 2024 vocus All rights reserved.