【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實驗室
31會員
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
賽勒布倫尼科夫以流亡處境回望蘇聯電影導演帕拉贊諾夫的舞台作品,以十段寓言式殘篇,重新拼貼記憶、暴力與美學,並將審查、政治犯、戰爭陰影與「形式即政治」的劇場傳統推到台前。本文聚焦於《傳奇:帕拉贊諾夫的十段殘篇》的舞台美術、音樂與多重扮演策略,嘗試解析極權底下不可言說之事,將如何成為可被觀看的公共發聲。
Thumbnail
賽勒布倫尼科夫以流亡處境回望蘇聯電影導演帕拉贊諾夫的舞台作品,以十段寓言式殘篇,重新拼貼記憶、暴力與美學,並將審查、政治犯、戰爭陰影與「形式即政治」的劇場傳統推到台前。本文聚焦於《傳奇:帕拉贊諾夫的十段殘篇》的舞台美術、音樂與多重扮演策略,嘗試解析極權底下不可言說之事,將如何成為可被觀看的公共發聲。
Thumbnail
柏林劇團在 2026 北藝嚴選,再次帶來由布萊希特改編的經典劇目《三便士歌劇》(The Threepenny Opera),導演巴里・柯斯基以舞台結構與舞台調度,重新向「疏離」進行提問。本文將從觀眾慾望作為戲劇內核,藉由沉浸與疏離的辯證,解析此作如何再次照見觀眾自身的位置。
Thumbnail
柏林劇團在 2026 北藝嚴選,再次帶來由布萊希特改編的經典劇目《三便士歌劇》(The Threepenny Opera),導演巴里・柯斯基以舞台結構與舞台調度,重新向「疏離」進行提問。本文將從觀眾慾望作為戲劇內核,藉由沉浸與疏離的辯證,解析此作如何再次照見觀眾自身的位置。
Thumbnail
本文深入解析臺灣劇團「晃晃跨幅町」對易卜生經典劇作《海妲.蓋柏樂》的詮釋,從劇本歷史、聲響與舞臺設計,到演員的主體創作方法,探討此版本如何讓經典劇作在當代劇場語境下煥發新生,滿足現代觀眾的觀看慾望。
Thumbnail
本文深入解析臺灣劇團「晃晃跨幅町」對易卜生經典劇作《海妲.蓋柏樂》的詮釋,從劇本歷史、聲響與舞臺設計,到演員的主體創作方法,探討此版本如何讓經典劇作在當代劇場語境下煥發新生,滿足現代觀眾的觀看慾望。
Thumbnail
《轉轉生》為奈及利亞編舞家庫德斯.奧尼奎庫與 Q 舞團創作的當代舞蹈作品,融合舞蹈、音樂、時尚和視覺藝術,透過身體、服裝與群舞結構,回應殖民歷史、城市經驗與祖靈記憶的交錯。本文將從服裝設計、身體語彙與「輪迴」的「誕生—死亡—重生」結構出發,分析《轉轉生》如何以當代目光,形塑去殖民視角的奈及利亞歷史。
Thumbnail
《轉轉生》為奈及利亞編舞家庫德斯.奧尼奎庫與 Q 舞團創作的當代舞蹈作品,融合舞蹈、音樂、時尚和視覺藝術,透過身體、服裝與群舞結構,回應殖民歷史、城市經驗與祖靈記憶的交錯。本文將從服裝設計、身體語彙與「輪迴」的「誕生—死亡—重生」結構出發,分析《轉轉生》如何以當代目光,形塑去殖民視角的奈及利亞歷史。
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. 物件的鍵值對操作,用於建立以函數輸出為鍵的物件。
Thumbnail
題目:你的團隊正在開發一個新的高級文本編輯器,你的任務是實現行號功能。請編寫一個函數,該函數接受一個字符串列表作為輸入,並返回每行字符串前面附帶正確的行號。行號從 1 開始計數。格式為 n: 字符串。請注意冒號和空格之間的間隔。
Thumbnail
題目:你的團隊正在開發一個新的高級文本編輯器,你的任務是實現行號功能。請編寫一個函數,該函數接受一個字符串列表作為輸入,並返回每行字符串前面附帶正確的行號。行號從 1 開始計數。格式為 n: 字符串。請注意冒號和空格之間的間隔。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News