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

更新 發佈閱讀 5 分鐘
【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 區域函數功能表

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 區域函數,我們可以更優雅地處理可空性問題,使得程式開發更加高效順暢。

留言
avatar-img
HKT實驗室
28會員
278內容數
哈囉!歡迎光臨我的沙龍!我是 KT,一位對應用程式開發充滿熱情的開發者。在這個專屬空間,我將與您分享我在應用開發領域的深入學習心得和豐富的實戰經驗。如果您對應用程式開發技術同樣充滿好奇,渴望不斷探索新知,歡迎成為我們的會員,一起在應用程式開發的旅途上,探索更深層次的技術世界,享受學習的樂趣。
HKT實驗室的其他內容
2023/12/15
本文介紹 Kotlin 中的延遲初始化(lateinit)和懶加載(lazy)的使用方法,以及它們之間的差異。這些關鍵字能夠提升程式效能並簡化程式碼撰寫。
Thumbnail
2023/12/15
本文介紹 Kotlin 中的延遲初始化(lateinit)和懶加載(lazy)的使用方法,以及它們之間的差異。這些關鍵字能夠提升程式效能並簡化程式碼撰寫。
Thumbnail
2023/12/11
空值例外是開發中一個常見的風險,特別是在 Kotlin 和 Java 這樣的跨平台開發中更容易出現。藉由合理地運用 Kotlin 的空值安全機制以及對 Java 程式碼的註解,可以有效地降低程式錯誤的風險,提高程式碼的可靠性和穩定性。
Thumbnail
2023/12/11
空值例外是開發中一個常見的風險,特別是在 Kotlin 和 Java 這樣的跨平台開發中更容易出現。藉由合理地運用 Kotlin 的空值安全機制以及對 Java 程式碼的註解,可以有效地降低程式錯誤的風險,提高程式碼的可靠性和穩定性。
Thumbnail
2023/12/11
在 IntelliJ IDEA 建立 Kotlin 專案時,要執行 Java 程式只需將其檔案命名為 .java,並放置在專案的 java 目錄中。這樣就可以順利執行該 Java 程式。
Thumbnail
2023/12/11
在 IntelliJ IDEA 建立 Kotlin 專案時,要執行 Java 程式只需將其檔案命名為 .java,並放置在專案的 java 目錄中。這樣就可以順利執行該 Java 程式。
Thumbnail
看更多
你可能也想看
Thumbnail
vocus 慶祝推出 App,舉辦 2026 全站慶。推出精選內容與數位商品折扣,訂單免費與紅包抽獎、新註冊會員專屬活動、Boba Boost 贊助抽紅包,以及全站徵文,並邀請你一起來回顧過去的一年, vocus 與創作者共同留下了哪些精彩創作。
Thumbnail
vocus 慶祝推出 App,舉辦 2026 全站慶。推出精選內容與數位商品折扣,訂單免費與紅包抽獎、新註冊會員專屬活動、Boba Boost 贊助抽紅包,以及全站徵文,並邀請你一起來回顧過去的一年, vocus 與創作者共同留下了哪些精彩創作。
Thumbnail
在 Kotlin 程式語言中,列舉類別 (Enum classes) 可以定義一組具有固定名稱和值的常數。我們通常會使用列舉類別來表示一組相關的狀態或選項,例如:顏色(黃、綠、紅)、方向(東、南、西、北)、技能等級(高、中、低)。
Thumbnail
在 Kotlin 程式語言中,列舉類別 (Enum classes) 可以定義一組具有固定名稱和值的常數。我們通常會使用列舉類別來表示一組相關的狀態或選項,例如:顏色(黃、綠、紅)、方向(東、南、西、北)、技能等級(高、中、低)。
Thumbnail
Kotlin 程式語言中的範圍(Range)循環操作,可以輕鬆地迭代特定範圍內的值。一個範圍由兩個值界定,即起始值和終止值。 此外,還有 step、until 和 downTo 函數可以與範圍搭配運用,提供更多彈性和控制。
Thumbnail
Kotlin 程式語言中的範圍(Range)循環操作,可以輕鬆地迭代特定範圍內的值。一個範圍由兩個值界定,即起始值和終止值。 此外,還有 step、until 和 downTo 函數可以與範圍搭配運用,提供更多彈性和控制。
Thumbnail
在 Kotlin 程式語言中,while 迴圈是用來重複執行區塊內程式碼,只要滿足特定條件就會持續運行,一旦條件不滿足,迴圈就會停止執行。這種特性讓你能夠以更靈活的方式處理程式邏輯,並在滿足特定情況時停止迴圈的執行。
Thumbnail
在 Kotlin 程式語言中,while 迴圈是用來重複執行區塊內程式碼,只要滿足特定條件就會持續運行,一旦條件不滿足,迴圈就會停止執行。這種特性讓你能夠以更靈活的方式處理程式邏輯,並在滿足特定情況時停止迴圈的執行。
Thumbnail
在 Kotlin 程式語言中,for 迴圈非常便捷,能用於遍歷陣列、列表、集合等多種資料型別中的元素。這種遍歷方式不僅簡潔易讀,還能輕鬆處理集合內的元素。
Thumbnail
在 Kotlin 程式語言中,for 迴圈非常便捷,能用於遍歷陣列、列表、集合等多種資料型別中的元素。這種遍歷方式不僅簡潔易讀,還能輕鬆處理集合內的元素。
Thumbnail
Map 集合特性: 採 key、value 方式存放,key 唯一不能重覆。
Thumbnail
Map 集合特性: 採 key、value 方式存放,key 唯一不能重覆。
Thumbnail
重要知識點: 1. TypeScript 全局擴展,使所有陣列都能使用 groupBy 方法。 2. 利用泛型創建彈性函數,提高代碼可重用性。 3. 迭代陣列中的元素,實現遍歷和處理功能。 4. 物件的鍵值對操作,用於建立以函數輸出為鍵的物件。
Thumbnail
重要知識點: 1. TypeScript 全局擴展,使所有陣列都能使用 groupBy 方法。 2. 利用泛型創建彈性函數,提高代碼可重用性。 3. 迭代陣列中的元素,實現遍歷和處理功能。 4. 物件的鍵值對操作,用於建立以函數輸出為鍵的物件。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News