【Kotlin 入門指南】系列文章目錄:https://bit.ly/3t8awwL
Kotlin 線上課程教學影片:https://bit.ly/3qJ5a5Q
當我們需要對特定物件進行多個操作時,傳統的做法是每次都要重複寫下該物件的名稱,這不僅冗長,還可能降低程式碼的可讀性。而 with
函數則能夠解決這個問題,它的作用是將指定物件傳遞給 lambda 函數,在該函數內可以直接訪問該物件的屬性和方法。
在這個範例中,我們創建了一個 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
函數讓我們可以在 lambda 函數內直接調用字串的 contains
方法,提高了程式碼的可讀性和簡潔性。
fun main() {
val dataIsContainHKT = with("HKT線上教室") {
contains("HKT")
}
println(dataIsContainHKT)
}
當我們需要對某個 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
}