Avatar ·

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

مرحبًا بالجميع! لقد بدأت للتو في تعلم Kotlin بعد Java وأصبحت مرتبكًا في تعريف المتغيرات. في Kotlin هناك كلمتان رئيسيتان: var و val. أفهم أن كلاهما يُستخدم لإنشاء المتغيرات، لكنني لا أستطيع استيعاب متى يجب استخدام أحدهما والآخر.

في Java، اعتدت أن المتغيرات تكون دائمًا قابلة للتغيير ما لم يُحدد final. وهنا الأمر معكوس — يبدو أن val يُستخدم بشكل أكثر شيوعًا، لكنني لا أفهم السبب.

إليك مثال على الكود الذي يربكني:

fun main() {
    var name = "آنا"
    name = "ماريا"  // يعمل
    
    val city = "موسكو"
    // city = "سانت بطرسبرغ"  // خطأ في الترجمة!
    
    var count = 0
    count = count + 1  // يعمل
    
    val maxCount = 100
    // maxCount = 200  // خطأ!
}

قرأت أن val هو مرجع غير قابل للتغيير (مثل final في Java)، بينما var قابل للتغيير. لكن الأمر ليس واضحًا تمامًا بالنسبة لي.