Avatar ·

Qu'est-ce qu'un «receiver» en Kotlin et pourquoi en a-t-on besoin ?

Bonjour, collègues ! Je viens de commencer à étudier Kotlin après Java et je suis tombé sur le terme « receiver ». Je lis la documentation et je vois des choses comme `apply`, `let`, `run`, `with` — et partout on parle de receivers. Mais je n'arrive pas à comprendre complètement ce que c'est et comment ça fonctionne. Voici un exemple simple. J'écris ce code : ```kotlin data class Person(var name: String = "", var age: Int = 0) fun main() { val person = Person().apply { name = "Alice" // Ici, j'accède à name directement, sans person.name age = 30 } println(person) } ``` Je comprends qu'à l'intérieur du bloc `apply`, je peux écrire `name = "Alice"` au lieu de `person.name = "Alice"`. Mais comment ça marche ? Que signifie « fonction avec receiver » ? Est-ce une sorte de closure magique ? Ou est-ce similaire à la façon dont `this` fonctionne en Java ? J'ai l'impression de manquer un concept fondamental. Pouvez-vous m'expliquer simplement ce qu'est un receiver en Kotlin, en quoi il diffère d'un argument de fonction ordinaire, et où cela peut être utile ?