【Kotlin 入門指南】系列文章目錄:https://bit.ly/3t8awwL
Kotlin 線上課程教學影片:https://bit.ly/3qJ5a5Q
在 Kotlin 程式語言中,當你使用 apply
函數時,你可以將其視為對該物件進行屬性設定的操作。 apply
函數讓你能夠直接在物件上執行多個設定操作,並返回該物件本身,讓程式碼更為簡潔而具有可讀性。這個函數特別適合在建立物件後立即對其屬性進行初始化或設定的情境下使用。
在這個範例中,示範如何使用 apply
函數對一個 Account
物件進行屬性設定。可以看到,透過 apply
函數,我們能夠直接在大括號內部進行多個屬性的設定,讓程式碼更加簡潔易讀。
//宣告一個 Person 資料類別
data class Account(val name: String) {
var id:String = ""
var balance: Int = 0
var addr: String = ""
}
//使用前
val adam = Account("HKT線上教室")
adam.id = "qwerty1234"
adam.balance = 88888888
adam.addr = "台北101"
//使用後
val account = Account("HKT線上教室").apply {
id = "qwerty1234"
balance = 88888888
addr = "台北101"
}
println(account.name) //HKT線上教室
println(account.id) //qwerty1234
println(account.balance) //88888888
println(account.addr) //台北101
apply
函數與 run
函數有些類似,但其差異點在於返回值。apply
函數返回的是該物件本身,而 run
函數則是返回 Lambda 運算的結果。
在這個範例中,我們可以看到apply
函數返回的結果是原本的字串,而 run
函數返回的是運算結果。
fun main() {
val applyResult = "HKT線上教室".apply {
9 * 9
}
val runResult = "HKT線上教室".run {
9 * 9
}
println(applyResult)//HKT線上教室
println(runResult)//81
}
在設定 Android 元件的屬性時,若使用 apply
函數,可以省去多次判斷是否為 null 的步驟,使程式碼更加簡潔清晰,透過 apply
函數,我們能夠直接對 textView
物件進行屬性設定,而不需要多次進行 null 判斷,提高了程式碼的可讀性與維護性。
val textView : TextView = findViewById(R.id.textView)
//未使用 run 區域函數,每次使用都要「?.」判斷是否為 null
textView?.text = "HKT線上教室"
textView?.setTextColor(Color.parseColor("#ffd700"))
textView?.textSize = 66f
//使用 apply 區域函數
textView.apply {
text = "HKT線上教室"
setTextColor(Color.parseColor("#ffd700"))
textSize = 66f
}