Kotlin Academy · درس

val في مقابل var: ثبات القيم منذ البداية

فهم الفرق بين val وvar وسبب أهمية عدم القابلية للتغيير

الدرس 2 من 413 خطوة

val في مقابل var: ثبات القيم منذ البداية درس مجاني في Kotlin Academy على CoddyKit. هذا هو الدرس 2 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Kotlin Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Kotlin Academy 4 دروس في المجموع.

طريقتان لتعريف متغير

تحتوي Kotlin على كلمتين مفتاحيتين لتعريف المتغيرات: val للمراجع للقراءة فقط (غير القابلة للتغيير)، وvar للمراجع القابلة للتغيير. ويُعدّ الاختيار الصحيح مهمًا.

‏val: مرجع للقراءة فقط

تعرّف val مرجعًا لا يمكن إعادة إسناده بعد تهيئته. فكّروا فيه على أنه يشبه final في Java.
val name = "Kotlin"
println(name)
// name = "Java" // Error: Val cannot be reassigned

‏var: مرجع قابل للتغيير

تعرّف var متغيرًا يمكن إعادة إسناده. استخدموا var فقط عندما تحتاجون فعلًا إلى التغيير.
var counter = 0
counter = 1
counter += 1
println(counter) // 2

استنتاج النوع

تستنتج Kotlin النوع من القيمة الابتدائية. ويمكنكم أيضًا كتابة النوع صراحةً بعد النقطتين.
val age = 25          // inferred: Int
val name: String = "Ana"  // explicit type
var score: Double = 0.0

‏val لا يعني أن الكائن غير قابل للتغيير

تمنع val إعادة إسناد المرجع، لكن يمكن أن يظل الكائن نفسه قابلًا للتغيير. فما زال من الممكن إضافة عناصر إلى MutableList مُعرّف باستخدام val.
val list = mutableListOf(1, 2, 3)
list.add(4)        // OK! list is val but mutable
// list = mutableListOf() // Error: reassignment

فضّلوا val افتراضيًا

توصي أدلة أسلوب Kotlin باستخدام val افتراضيًا. فهذا يجعل الشيفرة أكثر أمانًا وأسهل في الفهم. انتقلوا إلى var فقط عند الحاجة إلى التغيير.
val pi = 3.14159     // constant value
val greeting = "Hi"  // never changes
var retries = 3      // will be decremented

‏val مقارنةً بـ const val

تُستخدم const val للثوابت وقت الترجمة (الأنواع البدائية وString في المستوى الأعلى أو داخل object/companion). أما val فهو ثابت وقت التشغيل.
const val MAX_SIZE = 100    // compile-time
val instance = MyClass()    // runtime

‏var غير مهيأ

يمكنكم تعريف var من دون تهيئته، لكن يجب MUST توفير نوع وإسناد قيمة قبل استخدامه. أما val فيجب تهيئته دائمًا.
var result: String
result = "computed"
println(result)

النطاق وحجب الأسماء

تقتصر المتغيرات على نطاق الكتلة التي توجد فيها. ويمكن للنطاقات الداخلية حجب المتغيرات الخارجية — لكن ذلك قد يسبب الالتباس، لذا استخدموا أسماء واضحة وذات معنى.
val x = 10
run {
    val x = 20  // shadows outer x
    println(x)  // 20
}
println(x)      // 10

اصطلاحات التسمية

تستخدم Kotlin صيغة camelCase للمتغيرات والدوال. وتستخدم الثوابت (const val) صيغة UPPER_SNAKE_CASE. أما الأصناف فتستخدم PascalCase.
val firstName = "Jane"     // camelCase
const val MAX_ITEMS = 50   // UPPER_SNAKE_CASE
class UserProfile           // PascalCase

لماذا يهم عدم قابلية التغيير

تكون البيانات غير القابلة للتغيير آمنة للخيوط افتراضيًا، وأسهل في الاختبار، وتقلل الأخطاء الناتجة عن التغييرات غير المتوقعة. اسألوا دائمًا: هل أحتاج إلى تغيير هذه القيمة؟

تحقّق سريع

ما الكلمة المفتاحية التي تعرّف مرجعًا للقراءة فقط (لا يمكن إعادة إسناده) في Kotlin؟

مراجعة

val = مرجع للقراءة فقط، وvar = قابل للتغيير. فضّلوا val. يتيح استنتاج النوع تجاوز كتابة الأنواع صراحةً. التالي: الأنواع المضمّنة في Kotlin!
البدء مجانًا

تعلم Kotlin مع معلم ذكاء اصطناعي — مجانًا

اكتب وقم بتشغيل أكوادك الفعلية في المتصفح، واحصل على مساعدة فورية من معلم ذكاء اصطناعي متاح 24/7، واستمر من حيث توقفت على الويب أو في التطبيق.

الدورات
51
الدروس
203

الأسئلة الشائعة

هل درس «val في مقابل var: ثبات القيم منذ البداية» مجاني؟

نعم — نص درس «val في مقابل var: ثبات القيم منذ البداية» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Kotlin Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Kotlin Academy 4 دروس في المجموع.

ماذا ستتعلم في «val في مقابل var: ثبات القيم منذ البداية»؟

فهم الفرق بين val وvar وسبب أهمية عدم القابلية للتغيير تتمرن على Kotlin Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ Kotlin Academy؟

لا تُشترط خبرة سابقة. Kotlin Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 2 من أصل 4.

كم من الوقت يستغرق درس «val في مقابل var: ثبات القيم منذ البداية»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس Kotlin Academy هذا؟

نعم. كل درس في Kotlin Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. إعداد Kotlin: REPL وIntelliJ وOnline Playground
  2. val في مقابل var: ثبات القيم منذ البداية
  3. الأنواع الأساسية في Kotlin: Int وDouble وBoolean وChar
  4. أول برنامج Kotlin لكم: main وprintln والإدخال
← العودة إلى Kotlin Academy