作用域函数区别
00:00
Kotlin作用域函数区别:let、run、with、apply、also。
1. 对比表
| 函数 | 对象引用 | 返回值 | 是否扩展函数 |
|---|---|---|---|
| let | it | lambda 结果 | 是 |
| run | this | lambda 结果 | 是 |
| with | this | lambda 结果 | 否(参数) |
| apply | this | 对象本身 | 是 |
| also | it | 对象本身 | 是 |
2. 使用场景
2.1 let — 空安全与转换
val length = name?.let {
println("Name: $it")
it.length
}
2.2 apply — 对象配置
val person = Person().apply {
name = "Alice"
age = 30
}
2.3 also — 附加操作
val numbers = mutableListOf(1, 2, 3).also {
println("Original: $it")
}
2.4 run — 执行块
val result = run {
val a = computeA()
val b = computeB()
a + b
}
2.5 with — 非空对象操作
with(configuration) {
host = "localhost"
port = 8080
debug = true
}