Avatar ·

متى تستخدم run، let، apply، also و with في Kotlin؟ أمثلة وشرح

مرحباً بالجميع! لقد بدأت للتو في تعلم Kotlin بعد Java، وقد أربكتني دوال النطاق (scope functions): run، let، apply، also و with بشدة. قرأت التوثيق، لكني ما زلت لا أفهم متى أستخدم أي منها. على سبيل المثال، أرى غالباً هذا الكود: ```kotlin val numbers = mutableListOf("one", "two", "three") numbers.let { println(it) } numbers.apply { add("four") } numbers.run { println("Size: $size") } ``` لكن لماذا لا يمكنني ببساطة كتابة `println(numbers)` أو `numbers.add("four")`؟ ما الفرق بين `let` و `apply`؟ ولماذا نحتاج `also`؟ أيضاً، حاولت تهيئة كائن مع إعدادات: ```kotlin val person = Person().apply { name = "John" age = 30 } ``` هذا يعمل، لكن نفس الشيء يمكن فعله باستخدام `with`: ```kotlin val person = with(Person()) { name = "John" age = 30 this } ``` ما الفرق؟ ومتى أستخدم `run` بدلاً من `apply`؟ سأكون ممتناً للحصول على قواعد واضحة وأمثلة لكل دالة.