[Android] Kotlin Scope functions:let, run, with, apply, and also

1. apply

  • Object referencethis
  • 返回值作用域函數內部對象 (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

留言

這個網誌中的熱門文章

[Android] TextView 換行

[Android]android Global variable 寫法

[Android] build the JAR file in Android Studio