Avatar ·

ما الفرق بين var و val في Kotlin؟ متى نستخدم أيهما؟

مرحبًا! لقد بدأت للتو في تعلم Kotlin بعد Java وأصبحت مرتبكًا بشأن تعريف المتغيرات. في Java، اعتدت على تعريف المتغيرات بنوع (int, String) ومُعدِّل (final للثوابت). أما في Kotlin، فأرى كلمتين رئيسيتين: var و val. قرأت أن val هو مشابه لـ final في Java، بينما var هو متغير عادي قابل للتغيير. لكن عمليًا، ظهرت لدي أسئلة. على سبيل المثال، كتبت هذا الكود: ```kotlin fun main() { var name = "Анна" name = "Мария" // هذا مسموح، كل شيء بخير val age = 25 age = 30 // خطأ! Val cannot be reassigned } ``` مع val الأمر واضح — لا يمكن إعادة التعيين. لكن ماذا لو كان val يخزن كائنًا وليس قيمة أولية؟ مثلًا: ```kotlin val list = mutableListOf("a", "b") list.add("c") // هل هذا يعمل؟ println(list) // سيُظهر [a, b, c] ``` هل يعني هذا أن val ليس ثابتًا، بل مجرد مرجع لا يمكن تغييره؟ أم أنني أخلط الأمور؟ أيضًا، يهمني معرفة: متى يكون من الأفضل استخدام var ومتى val؟ هل يؤثر هذا على الأداء؟