تعبيرات case/when
التفرع متعدد المسارات
تعبيرات case/when درس مجاني في Ruby Academy على CoddyKit. هذا هو الدرس 2 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Ruby Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Ruby Academy 4 دروس في المجموع.
التفرع متعدد المسارات
عندما تقارنون قيمة واحدة باحتمالات عديدة، تصبح سلسلة if/elsif الطويلة مليئة بالضوضاء. يجعل تعبير case في Ruby التفرع متعدد المسارات واضحًا وسهل القراءة.
day = "Mon"
case day
when "Sat", "Sun"
puts "Weekend"
else
puts "Weekday"
endأساسيات case / when
تُقارَن القيمة التي تأتي بعد case بكل when بالترتيب. يُشغَّل أول تطابق، ثم ينتقل التنفيذ إلى end.
grade = "B"
case grade
when "A"
puts "Excellent"
when "B"
puts "Good"
when "C"
puts "Okay"
endقيم متعددة لكل when
اكتبوا عدة قيم في when واحد، وافصلوا بينها بفواصل. إذا تطابقت أيٌّ منها، يُشغَّل ذلك الفرع.
char = "e"
case char
when "a", "e", "i", "o", "u"
puts "Vowel"
else
puts "Consonant"
endفرع else
أضيفوا else ليكون فرعًا شاملًا. من دونه، يعيد case غير المطابق ببساطة القيمة nil.
code = 500
case code
when 200
puts "OK"
when 404
puts "Not Found"
else
puts "Other status"
endcase تعبير
مثل if، يعيد case قيمة الفرع المطابق، ولذلك يمكنكم إسناده مباشرةً.
score = 82
letter = case
when score >= 90 then "A"
when score >= 80 then "B"
else "C"
end
puts letterالكلمة المفتاحية then
استخدموا then لوضع جسم الفرع في السطر نفسه مع when للفروع القصيرة.
n = 3
case n
when 1 then puts "one"
when 2 then puts "two"
when 3 then puts "three"
endمطابقة النطاقات
يمكن أن يحتوي when على Range. تستخدم Ruby المعامل === خلف الكواليس، ويتحقق === الخاص بـ Range من الانتماء إلى النطاق.
score = 73
case score
when 90..100 then puts "A"
when 70..89 then puts "B"
when 0..69 then puts "C"
endالمطابقة حسب الفئة
لأن Class === object تكون true عندما يكون الكائن نسخةً من الفئة، يمكنكم إجراء التفرع حسب النوع.
value = 3.14
case value
when Integer then puts "an integer"
when Float then puts "a float"
when String then puts "a string"
endسحر ===
يستدعي كل when التعبير pattern === value. وتعرّف النطاقات والفئات وRegexps سلوكًا مفيدًا للمعامل ===، ولهذا يكون case مرنًا إلى هذه الدرجة.
email = "jane@example.com"
case email
when /@/ then puts "Looks like an email"
else puts "No @ sign"
endcase من دون قيمة موضوع
احذفوا القيمة التي تأتي بعد case لكتابة سلسلة واضحة من الشروط المنطقية، شبيهة بصيغة if/elsif المرتبة.
temp = 5
case
when temp < 0 then puts "Freezing"
when temp < 15 then puts "Cold"
when temp < 25 then puts "Mild"
else puts "Warm"
endتجميع المفاهيم
يكون case مثاليًا عندما تقود قيمة واحدة عملية اتخاذ القرار. استخدموا الصيغة من دون قيمة موضوع عندما يكون كل فرع اختبارًا منطقيًا مستقلًا.
role = :admin
msg = case role
when :admin then "Full access"
when :editor then "Can edit"
when :viewer then "Read only"
else "No access"
end
puts msgتحقق سريع
اختبروا فهمكم لـ case/when.
مراجعة
لقد تعلمتم تعبير case:
- يطابق
whenأول تطابق، ثم ينتقل إلىend. - يمكن أن يسرد
whenواحد عدة قيم. - يعيد
caseقيمةً ويدعمthen. - تعمل النطاقات والفئات وRegexps لأن
whenيستخدم===. - توفّر الصيغة من دون قيمة موضوع سلسلةً منطقية واضحة.
n = 42
kind = case
when n.zero? then "zero"
when n.positive? then "positive"
else "negative"
end
puts kindالأسئلة الشائعة
هل درس «تعبيرات case/when» مجاني؟
نعم — نص درس «تعبيرات case/when» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Ruby Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Ruby Academy 4 دروس في المجموع.
ماذا ستتعلم في «تعبيرات case/when»؟
التفرع متعدد المسارات تتمرن على Ruby Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Ruby Academy؟
لا تُشترط خبرة سابقة. Ruby Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 2 من أصل 4.
كم من الوقت يستغرق درس «تعبيرات case/when»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Ruby Academy هذا؟
نعم. كل درس في Ruby Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- if وunless وternary
- تعبيرات case/when
- القيم المنطقية في Ruby
- عبارات الحراسة