Avatar ·

什么是 Kotlin 中的「receiver」(接收者)以及为什么需要它?

大家好!我刚从 Java 开始学习 Kotlin,遇到了术语「receiver」(接收者)。阅读文档时看到 `apply`、`let`、`run`、`with` 这些内容,到处都在提接收者。但我无法完全理解它是什么以及它是如何工作的。 这里有一个简单的例子。我写了这样的代码: ```kotlin data class Person(var name: String = "", var age: Int = 0) fun main() { val person = Person().apply { name = "Alice" // 这里我直接访问 name,而不是 person.name age = 30 } println(person) } ``` 我明白在 `apply` 块内部,我可以写 `name = "Alice"` 而不是 `person.name = "Alice"`。但这是如何工作的?「带接收者的函数」是什么意思?这是一种神奇的闭包吗?还是类似于 Java 中 `this` 的工作方式? 我觉得我遗漏了一些基本概念。你能用通俗的方式解释一下 Kotlin 中的 receiver 是什么,它与普通函数参数有何不同,以及在哪里可以使用它吗?