متى تستخدم 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`؟
سأكون ممتناً للحصول على قواعد واضحة وأمثلة لكل دالة.