[Android] Kotlin Scope functions:let, run, with, apply, and also
1. apply
- Object reference:
this
-
返回值: 作用域函數內部對象 (
this
)。 - 適用情境: 初始化對象。當你需要在創建或在不改變對象參考的情況下對其進行設置時。
val person = Person().apply { name = "Bella" age = 18 } println(person)
2. let
- Object reference: it
- 返回值: 作用域函數最後一行的結果。
-
適用情境:
適用於非空檢查或轉換。 當需要執行一些操作並返回一個值,或者需要執行非空檢查(通常與
?.
一起使用)時。
val length = person?.let {
println(it. name)
}
3. also
- Object reference: it
- 返回值: 作用域函數內部對象 (
it
)。 - 適用情境: 當你想在對象上執行額外的操作但不改變它時。
val person = Person().also {
println("Created person with name: ${it.name}")
}
4. run
- Object reference:
this
- 返回值: 作用域函數最後一行的結果。
- 適用情境: 執行某個代碼塊,並返回代碼塊的結果。在一個對象上執行一系列操作並返回結果,或多組操作包裝在一個代碼塊中並返回最終值時。
val person = Person() val greeting = person.run { "Hello, my name is $name" }
5. with
- Object reference:
this
- 返回值: Lambda 表達式的結果
- 適用情境:with 就像 run 的變形,只是呼叫的方式不大一樣,with(){},,當你已經有一個對象,並想在該對象上運行多個操作時。
以下有幾個可以參考的情況。
- 執行一個非null操作:let
- 初始設定object數值:apply
- 設定一個object裡面的值,並回傳計算結果:run
- 在Chaining function中間做一個附加的動作:also
ref. = https://kotlinlang.org/docs/scope-functions.html
留言
張貼留言