Scala for Backend Engineering & Functional Programming · درس

val وvar والأنواع

الروابط والاستدلال

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

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

الربط في Scala

في Scala، تمنحون القيم أسماءً باستخدام bindings، أي الربط. والكلمتان المفتاحيتان هما val وvar.

يكون val غير قابل للتغيير (لا يمكن إعادة إسناده)، بينما يكون var قابلًا للتغيير (يمكن إعادة إسناده).

التصريح عن val

يربط val اسمًا بقيمة مرة واحدة. وتؤدي محاولة إعادة إسناده إلى خطأ في الترجمة.

فضّلوا استخدام val افتراضيًا، إذ يجعل عدم قابلية التغيير فهم الشيفرة أسهل.

object Main {
  def main(args: Array[String]): Unit = {
    val name = "Ada"
    println(name)
  }
}

التصريح عن var

يمكن إعادة إسناد var باستخدام =. استخدموه فقط عندما تحتاجون فعلًا إلى حالة قابلة للتغيير.

لاحظوا أن القيمة الجديدة يجب أن تظل متوافقة مع النوع الأصلي.

object Main {
  def main(args: Array[String]): Unit = {
    var count = 0
    count = count + 1
    count = count + 1
    println(count)
  }
}

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

تستنتج Scala النوع لكم في العادة. فعند كتابة val x = 42، يصبح x من النوع Int تلقائيًا.

يُسمى ذلك استنتاج النوع: تحصلون على كتابة ثابتة للأنواع من دون كتابة النوع دائمًا.

object Main {
  def main(args: Array[String]): Unit = {
    val x = 42
    val pi = 3.14
    val flag = true
    println(x)
    println(pi)
    println(flag)
  }
}

تعليقات الأنواع الصريحة

يمكنكم أيضًا تحديد النوع صراحةً بعد نقطتين: val x: Int = 42.

يفيد ذلك في توثيق الشيفرة أو اختيار نوع أوسع من النوع المستنتج.

object Main {
  def main(args: Array[String]): Unit = {
    val age: Int = 30
    val price: Double = 9.99
    val label: String = "Sale"
    println(label + ": " + price)
  }
}

الأنواع العددية الشائعة

توفّر Scala عدة أنواع عددية:

  • Int للأعداد الصحيحة
  • Long للأعداد الصحيحة الكبيرة
  • Double للأعداد العشرية
  • Float للأعداد العشرية الأصغر

يكون النوع الافتراضي للعدد الصحيح المكتوب حرفيًا هو Int، بينما يكون النوع الافتراضي للعدد العشري المكتوب حرفيًا هو Double.

object Main {
  def main(args: Array[String]): Unit = {
    val whole: Int = 7
    val big: Long = 9000000000L
    val dec: Double = 2.5
    println(whole + dec)
  }
}

Boolean وChar

يخزّن Boolean القيمة true أو false، بينما يخزّن Char محرفًا واحدًا مكتوبًا بين علامتي اقتباس مفردتين.

وهذان نوعان كاملان يمكنكم تخزينهما في vals وvars.

object Main {
  def main(args: Array[String]): Unit = {
    val isReady: Boolean = true
    val grade: Char = 'A'
    println(isReady)
    println(grade)
  }
}

نوع String

يخزّن String نصًا بين علامتي اقتباس مزدوجتين. والسلاسل النصية غير قابلة للتغيير في Scala.

يمكنكم وصلها باستخدام + واستدعاء العديد من الدوال المفيدة عليها.

object Main {
  def main(args: Array[String]): Unit = {
    val first = "Grace"
    val last = "Hopper"
    val full = first + " " + last
    println(full.toUpperCase)
  }
}

لماذا val بدلًا من var؟

تمنع القيم غير القابلة للتغيير فئة كاملة من الأخطاء؛ فلا يمكن لأي شيء آخر تغييرها من دون علمكم.

  • أسهل في الفهم
  • أكثر أمانًا في الشيفرة المتزامنة
  • تشجّع على الأسلوب الوظيفي

استخدموا var فقط عندما تكون قابلية التغيير مطلوبة فعلًا.

سلامة الأنواع عمليًا

نظرًا إلى أن Scala ذات كتابة ثابتة للأنواع، يكتشف المترجم عدم تطابق الأنواع قبل تشغيل البرنامج.

ستفشل محاولة إسناد نص إلى Int وقت الترجمة. إليكم شيفرة صحيحة ومتوافقة مع الأنواع.

object Main {
  def main(args: Array[String]): Unit = {
    val quantity: Int = 3
    val unitPrice: Double = 4.50
    val total: Double = quantity * unitPrice
    println(total)
  }
}

جمع العناصر

اجمعوا بين عمليات الربط غير القابلة للتغيير والقابلة للتغيير، مع الاستنتاج والتعليقات، في برنامج صغير واحد.

لاحظوا كيف يتتبع المترجم كل نوع نيابةً عنكم.

object Main {
  def main(args: Array[String]): Unit = {
    val base = 100
    var running = base
    val step: Int = 25
    running = running + step
    println(running)
  }
}

تحقق سريع

تحققوا من فهمكم لعمليات الربط والأنواع.

مراجعة

تعلّمتم كيف تمنح Scala أسماءً للقيم:

  • val عملية ربط غير قابلة للتغيير، بينما var قابلة للتغيير
  • يختار استنتاج النوع النوع انطلاقًا من القيمة
  • يمكنكم إضافة تعليقات صريحة مثل val x: Int
  • تشمل الأنواع الأساسية Int وLong وDouble وBoolean وChar وString
  • فضّلوا استخدام val للحصول على شيفرة أكثر أمانًا ووضوحًا
البدء مجانًا

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

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

الدورات
39
الدروس
143

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

هل درس «val وvar والأنواع» مجاني؟

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

ماذا ستتعلم في «val وvar والأنواع»؟

الروابط والاستدلال تتمرن على Scala for Backend Engineering & Functional Programming مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ Scala for Backend Engineering & Functional Programming؟

لا تُشترط خبرة سابقة. Scala for Backend Engineering & Functional Programming على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 2 من أصل 4.

كم من الوقت يستغرق درس «val وvar والأنواع»؟

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

هل يمكنني كتابة وتشغيل أكواد في درس Scala for Backend Engineering & Functional Programming هذا؟

نعم. كل درس في Scala for Backend Engineering & Functional Programming يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

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

  1. استخدام REPL
  2. val وvar والأنواع
  3. التعبيرات بدلًا من العبارات
  4. إقحام السلاسل
← العودة إلى Scala for Backend Engineering & Functional Programming