Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

when متعددة القيم

جزء من قسم المنطق وتدفق العمليات في رحلة Ruby على Coddy — الدرس 39 من 56.

يمكن لجملة when واحدة أن تطابق أياً من عدة قيم، مفصولة بفواصل. يتم تنفيذ الفرع إذا كان الموضوع يساوي أي واحدة منها.

day = "Sat"
kind = case day
       when "Sat", "Sun"                          then "weekend"
       when "Mon", "Tue", "Wed", "Thu", "Fri"  then "weekday"
       end
puts kind   # weekend

هذا أنظف بكثير من تسلسل || في if/elsif.

يمكنك أيضاً مزج أنواع قيم مختلفة في when واحدة: السلاسل النصية، والنطاقات، وأنماط التعبيرات النمطية، فجميعها مجرد أشياء تستجيب لـ ===:

def describe(x)
  case x
  when 0, nil       then "empty"
  when 1..9         then "small"
  when 10..99       then "medium"
  when /^huge:/i    then "flagged huge"
  end
end

اختر الأشكال التي تجعل كل فرع سهل القراءة بلمحة سريعة.

challenge icon

التحدي

سهل

اقرأ حرفًا واحدًا (سطر واحد من الإدخال). استخدم case مع فروع when متعددة القيم لطباعة أحد ما يلي:

  • vowel: إذا كان الإدخال أحد a, e, i, o, u (غير حساس لحالة الأحرف، قم بتحويل الإدخال إلى أحرف صغيرة أولاً)
  • digit: إذا كان الإدخال أحد 0..9 (استخدم نطاقًا)
  • punctuation: إذا كان الإدخال أحد .، ,، !، ?
  • other: أي شيء آخر

تعامل مع الإدخال كسلسلة نصية مكونة من حرف واحد. اختبر فرع digit باستخدام نطاق مثل "0".."9".

بالنسبة للإدخال E يكون الناتج vowel؛ وبالنسبة لـ 7 يكون digit؛ وبالنسبة لـ ! يكون punctuation.

ورقة مرجعية

يمكن لجملة when مطابقة قيم متعددة مفصولة بفواصل:

case day
when "Sat", "Sun" then "weekend"
when "Mon", "Tue", "Wed", "Thu", "Fri" then "weekday"
end

يمكنك المزج بين السلاسل النصية، والنطاقات، وأنماط التعبيرات النمطية (regex) في نفس جملة case:

case x
when 0, nil    then "empty"
when 1..9      then "small"
when /^huge:/i then "flagged huge"
end

جرّب بنفسك

ch = gets.chomp

# TODO: case ch.downcase ... مع فروع when متعددة القيم
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس المنطق وتدفق العمليات