Kotlin中的also、apply、invoke用法详解
以下是 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