Avatar ·

ما هو "المستقبل" (receiver) في Kotlin ولماذا هو مطلوب؟

مرحبًا أيها الزملاء! لقد بدأت للتو في تعلم Kotlin بعد Java وصادفت مصطلح "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"`. لكن كيف يعمل هذا؟ ما معنى "دالة مع مستقبل"؟ هل هو إغلاق سحري؟ أم أنه يشبه كيفية عمل `this` في Java؟ أشعر أنني أفتقد مفهومًا أساسيًا. هل يمكنكم الشرح ببساطة ما هو receiver في Kotlin، وكيف يختلف عن الوسيط العادي للدالة، وأين يمكن أن يكون مفيدًا؟