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

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

with

當我們需要對特定物件進行多個操作時,傳統的做法是每次都要重複寫下該物件的名稱,這不僅冗長,還可能降低程式碼的可讀性。而 with 函數則能夠解決這個問題,它的作用是將指定物件傳遞給 lambda 函數,在該函數內可以直接訪問該物件的屬性和方法。

with 區域函數,基本用法一

在這個範例中,我們創建了一個 mutableListOf 包含課程名稱的列表。在使用 with 函數前,我們需要分別使用 println 函數來輸出課程列表和其大小。而使用 with 函數後,我們可以直接在 lambda 函數中使用 this 來表示該列表,無需重複寫出變數名稱,程式碼更為簡潔。

fun main() {
val course = mutableListOf("Java", "Kotlin", "Android")

//使用前
println("$course")
println("${course.size}")


//使用後
with(course) {
println("$this")
println("$size")
}
}

with 區域函數,基本用法二

在這個範例中,我們直接對一個字串進行操作,判斷其是否包含特定字串。使用 with 函數讓我們可以在 lambda 函數內直接調用字串的 contains 方法,提高了程式碼的可讀性和簡潔性。

fun main() {
val dataIsContainHKT = with("HKT線上教室") {
contains("HKT")
}
println(dataIsContainHKT)
}

with 區域函數功能表

with 區域函數功能表

with 區域函數功能表

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

當我們需要對某個 View 執行多個操作時,例如改變文字、設定文字顏色和大小等,未使用 with 函數時,我們需要在每次操作之前都進行 null 檢查,以確保該 View 不為空。而使用 with 函數後,我們只需在一個區塊內對該 View 進行操作,無需重複進行 null 檢查,大幅提升了程式碼的簡潔性和可讀性。

val textView : TextView = findViewById(R.id.textView)

//未使用 with 區域函數,每次使用都要「?.」判斷是否為 null
textView?.text = "HKT線上教室"
textView?.setTextColor(Color.parseColor("#ffd700"))
textView?.textSize = 66f

//使用 with 區域函數
//todo null check
//if (textView == null) return
with(textView) {
text = "HKT線上教室"
setTextColor(Color.parseColor("#ffd700"))
textSize = 66f
}
5會員
186Content count
哈囉!歡迎光臨我的沙龍!我是 KT,一位對應用程式開發充滿熱情的開發者。在這個專屬空間,我將與您分享我在應用開發領域的深入學習心得和豐富的實戰經驗。如果您對應用程式開發技術同樣充滿好奇,渴望不斷探索新知,歡迎成為我們的會員,一起在應用程式開發的旅途上,探索更深層次的技術世界,享受學習的樂趣。
留言0
查看全部
發表第一個留言支持創作者!
你可能也想看
Thumbnail
重點摘要: 1.9 月降息 2 碼、進一步暗示年內還有 50 bp 降息 2.SEP 上修失業率預期,但快速的降息速率將有助失業率觸頂 3.未來幾個月經濟數據將繼續轉弱,經濟復甦的時點或是 1Q25 季底附近
Thumbnail
近期的「貼文發佈流程 & 版型大更新」功能大家使用了嗎? 新版式整體視覺上「更加凸顯圖片」,為了搭配這次的更新,我們推出首次貼文策展 ❤️ 使用貼文功能並完成這次的指定任務,還有機會獲得富士即可拍,讓你的美好回憶都可以用即可拍珍藏!
Thumbnail
重點摘要: 1.9 月降息 2 碼、進一步暗示年內還有 50 bp 降息 2.SEP 上修失業率預期,但快速的降息速率將有助失業率觸頂 3.未來幾個月經濟數據將繼續轉弱,經濟復甦的時點或是 1Q25 季底附近
Thumbnail
近期的「貼文發佈流程 & 版型大更新」功能大家使用了嗎? 新版式整體視覺上「更加凸顯圖片」,為了搭配這次的更新,我們推出首次貼文策展 ❤️ 使用貼文功能並完成這次的指定任務,還有機會獲得富士即可拍,讓你的美好回憶都可以用即可拍珍藏!