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

1. apply

  • Object referencethis
  • 返回值作用域函數內部對象 (this)。
  • 適用情境: 初始化對象。當你需要在創建或在不改變對象參考的情況下對其進行設置時。
  1. val person = Person().apply {
  2. name = "Bella"
  3. age = 18
  4. }
  5. println(person)

2. let

  • Object reference: it
  • 返回值: 作用域函數最後一行的結果。
  • 適用情境: 適用於非空檢查或轉換。 當需要執行一些操作並返回一個值,或者需要執行非空檢查(通常與 ?. 一起使用)時。
  1. val length = person?.let {
  2.     println(it. name)
  3. }

3. also

  • Object reference: it
  • 返回值: 作用域函數內部對象 (it)。
  • 適用情境: 當你想在對象上執行額外的操作但不改變它時。
  1. val person = Person().also {
  2.     println("Created person with name: ${it.name}")
  3. }

4. run 

  • Object reference: this
  • 返回值: 作用域函數最後一行的結果。
  • 適用情境: 執行某個代碼塊,並返回代碼塊的結果。在一個對象上執行一系列操作並返回結果,或多組操作包裝在一個代碼塊中並返回最終值時。
  1. val person = Person()
  2. val greeting = person.run {
  3. "Hello, my name is $name"
  4. }

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