以下是 Kotlin 中作用域函數(let
、run
、with
、also
、apply
)和 invoke
操作符的完整總結,結合代碼示例和對比說明,幫助您理解它們的用法和區別。
一、作用域函數:簡化對象操作
作用域函數用于在對象的上下文中執行代碼塊,并根據函數的不同返回對象本身或 lambda 的結果。以下是它們的核心區別:
1. let
- 引用對象:
it
(默認參數名,可自定義) - 返回值:lambda 表達式的結果
- 典型場景:非空對象操作、鏈式處理
val name: String? = "Kotlin"
val length = name?.let { println("Name is $it") // 輸出: Name is Kotlinit.length // 返回結果
}
println(length) // 輸出: 6
2. run
- 兩種形式:
- 擴展函數形式:使用
this
引用對象,返回 lambda 結果。 - 上下文對象形式:直接調用,返回 lambda 結果。
- 擴展函數形式:使用
- 典型場景:對象配置并返回計算結果。
擴展函數形式
data class Config(var host: String = "", var po