لماذا لا تحتوي List في Kotlin على طريقتَي add و remove، ولا Map على put؟
مرحبًا بالجميع! لقد بدأت للتو في تعلم Kotlin، وانتقلت من Java، وواجهت موقفًا غير مفهوم. في Java اعتدنا العمل مع ArrayList و HashMap واستدعاء list.add() و map.put() وما إلى ذلك بسهولة. لكن في Kotlin، عندما أكتب:
```kotlin
val myList = listOf(1, 2, 3)
myList.add(4) // خطأ: Unresolved reference: add
val myMap = mapOf("a" to 1, "b" to 2)
myMap.put("c", 3) // خطأ: Unresolved reference: put
```
يشتكي المترجم من عدم وجود هذه الطرق. جربت استخدام mutableListOf و mutableMapOf — وهناك تعمل add و put. لكن لماذا لا توجد للـ listOf و mapOf العادية؟ هل هذا خطأ في اللغة؟ أم أنني لا أفهم شيئًا في فلسفة Kotlin؟
أرجو التوضيح، كيف يمكنني العمل بشكل صحيح مع المجموعات في Kotlin إذا كنت بحاجة أحيانًا إلى إضافة عناصر وأحيانًا أخرى مجرد قراءة البيانات؟ وماذا تعني هذه المصطلحات "mutable" و "immutable"؟ شكرًا مقدمًا!
<<>>
إجابة مختصرة: الفرق بين المجموعات القابلة للتغيير وغير القابلة للتغيير
في Kotlin، تنقسم المجموعات إلى نوعين: immutable (غير قابلة للتغيير) و mutable (قابلة للتغيير). الدوال listOf() و mapOf() تنشئ مجموعات غير قابلة للتغيير، لذا لا تحتوي على طرق مثل add أو put أو remove. بينما mutableListOf() و mutableMapOf() تنشئ مجموعات قابلة للتغيير وتحتوي على هذه الطرق. هذا تصميم متعمد في Kotlin لتشجيع كتابة كود أكثر أمانًا ووضوحًا.