1. 在 apply 中使用 this
class Person {
var name: String = ""
var age: Int = 0
}
fun main() {
val person = Person().apply {
this.name = "Alice"
this.age = 25
}
println("Name: ${person.name}, Age: ${person.age}")
}
解释: apply 中的 this 是 Person 对象的接收者,可以省略写成 name = “Alice”。
2. 在 let 中使用 it
val name: String? = "Alice"
name?.let {
println("Hello, $it!")
}
解释: 这里的 it 代表 name 的非空值 “Alice”。
3. 选择使用 this 还是 it 的场景
使用 this:当你在类或扩展函数中,操作的是当前对象(接收者)。
使用 it:当你在 Lambda 中有一个参数,并且不想明确命名时。
4. 结合使用 this 和 it
class Box(val label: String) {
fun printLabel() {
listOf("item1", "item2").forEach {
println("$label contains $it")
}
}
}
fun main() {
val box = Box("MyBox")
box.printLabel()
}
解释:
this 引用 Box 类的当前对象,用于访问 label。
it 代表 forEach 中的元素。
5. 总结
this 主要用于引用当前对象或接收者对象,在类、apply 等上下文中频繁使用。
it 主要用于 Lambda 表达式的单个参数,是一种简洁的写法。
在实际开发中,如果需要频繁访问当前对象的成员,this 会更加合适;而在处理简单的 Lambda 表达式时,it 能让代码更加简洁。