الثوابت والرموز

تعديل
نسخ الدرس
تحميل الدرس

الثوابت والرموز

في الدرس السابق تعلمنا عن المتغيرات التي يمكن تغيير قيمتها. لكن ماذا لو أردنا قيمة لا تتغير أبداً؟ وماذا عن القيم التي نستخدمها كـ"علامات" أو "مفاتيح"؟ هنا يأتي دور الثوابت (Constants) والرموز (Symbols)!

الثوابت (Constants)

الثابت هو قيمة لا يُفترض تغييرها بعد تعريفها. في روبي، نُعرّف الثوابت بكتابة اسمها بحروف كبيرة (UPPERCASE):

الناتج:

لماذا نستخدم الثوابت؟

  1. قيم ثابتة رياضياًّ: مثل π (باي) أو سرعة الضوء
  2. إعدادات التطبيق: مثل اسم التطبيق أو الإصدار
  3. حدود قصوى: مثل الحد الأقصى للمستخدمين أو حجم الملف
  4. قيم مرجعية: مثل أسماء الأشهر أو أيام الأسبوع

الناتج:

تحذير عند تغيير الثوابت

روبي تُحذّرك إذا حاولت تغيير قيمة الثابت، لكنها لا تمنعك تماماً:

الناتج:

ستظهر رسالة تحذير: warning: already initialized constant MAX_SCORE

نصيحة: تعامل مع الثوابت كقيم لا يجب تغييرها أبداً، حتى لو سمحت روبي بذلك تقنياًّ.

اصطلاحات تسمية الثوابت

الرموز (Symbols)

الرمز (Symbol) هو نوع خاص من البيانات في روبي. يبدأ بنقطتين : ويُستخدم كـ"علامة" أو "اسم" ثابت:

الناتج:

الفرق بين الرموز والنصوص

قد تتساءل: ما الفرق بين :active و "active"؟ هناك فروقات مهمة:

الناتج:

لاحظ أن:

  • النصان "أحمد" لهما object_id مختلف (كائنان منفصلان)
  • الرمزان :active لهما نفس object_id (نفس الكائن!)

كفاءة الذاكرة

الرموز أكثر كفاءة في استخدام الذاكرة لأن روبي تُنشئ الرمز مرة واحدة فقط:

متى نستخدم الرموز؟

  1. مفاتيح القواميس (Hashes):

الناتج:

  1. حالات ثابتة:

الناتج:

  1. أسماء الدوال والخصائص:

الناتج:

تحويل بين النصوص والرموز

يمكنك التحويل بين النصوص والرموز بسهولة:

الناتج:

مقارنة الثوابت بالرموز

الميزةالثوابت (Constants)الرموز (Symbols)
الصياغةMAX_VALUE = 100:max_value
الاستخدامتخزين قيم ثابتةعلامات ومفاتيح
التغييرتحذير عند التغييرلا يمكن تغييرها
النوعأي نوع (رقم، نص، إلخ)Symbol دائماً
الذاكرةحسب نوع القيمةكفاءة عالية

مثال عملي: إعدادات تطبيق

الناتج:

نصائح مهمة

  1. استخدم الثوابت للقيم التي لا تتغير طوال تشغيل البرنامج
  2. استخدم الرموز بدلاً من النصوص عندما تحتاج لـ"علامات" ثابتة
  3. الرموز أسرع في المقارنة من النصوص
  4. الثوابت يجب أن تبدأ بحرف كبير، والاصطلاح هو SCREAMING_SNAKE_CASE
  5. الرموز لا يمكن تغييرها - هي ثابتة بطبيعتها

تمرين: الثوابت والرموز

حان وقت التطبيق! في محرر الشيفرة على اليسار:

المطلوب:

  1. عرّف ثابتاً باسم COUNTRY يحتوي على "مصر"
  2. عرّف ثابتاً باسم POPULATION يحتوي على 100000000
  3. عرّف متغيراً باسم status يحتوي على الرمز :active
  4. عرّف متغيراً باسم language يحتوي على الرمز :arabic
  5. اطبع كل قيمة باستخدام puts

الناتج المتوقع:

تلميح: الثوابت تُكتب بحروف كبيرة، والرموز تبدأ بنقطتين : !


تذكّر: الثوابت للقيم التي لا تتغير، والرموز للعلامات والمفاتيح الثابتة. كلاهما يجعل شيفرتك أوضح وأكثر كفاءة!