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

Case مع Classes و Regex

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

لقد استخدمت case مع النطاقات. العبارة نفسها تطابق أيضاً الأصناف والتعبيرات النمطية: كلاهما عبر عامل التشغيل === الذي يستدعيه when في الخلفية.

طابق حسب الفئة (class) للتفريع بناءً على نوع القيمة التي حصلت عليها:

def describe(value)
  case value
  when Integer then "a whole number"
  when Float   then "a decimal"
  when String  then "some text"
  else              "something else"
  end
end

puts describe(42)      # عدد صحيح
puts describe(3.14)    # عدد عشري
puts describe("hi")    # نص ما

المطابقة باستخدام تعبير نمطي (regex) للتفرع بناءً على شكل السلسلة النصية، أو رقم هاتف، أو بريد إلكتروني، أو تاريخ:

def kind_of(text)
  case text
  when /^\d+$/        then "all digits"
  when /@/            then "looks like an email"
  when /^[A-Z]/       then "starts with a capital"
  else                     "other"
  end
end

هذا أنظف بكثير من سلسلة من استدعاءات is_a? أو match? في if/elsif.

challenge icon

التحدي

سهل

اقرأ سطرًا واحدًا من المدخلات. استخدم عبارة case لطباعة أحد هذه التصنيفات بناءً على ما يبدو عليه الإدخال:

  • جميع الأرقام، number
  • يحتوي على @: email
  • يبدأ بحرف كبير، name
  • أي شيء آخر، unknown

تحقق من القواعد بالترتيب المذكور (لذا فإن 123 هي number، وليست unknown؛ و kevin@coddy.tech هي email؛ و Alice هي name).

بالنسبة للمدخل kevin@coddy.tech، يكون المخرج هو email.

ورقة مرجعية

تطابق عبارة case/when في Ruby مع الأصناف و التعبيرات النمطية باستخدام === بشكل داخلي.

المطابقة حسب الصنف:

case value
when Integer then "a whole number"
when Float   then "a decimal"
when String  then "some text"
else              "something else"
end

المطابقة حسب التعبيرات النمطية (regex):

case text
when /^\d+$/   then "all digits"
when /@/       then "looks like an email"
when /^[A-Z]/  then "starts with a capital"
else                "other"
end

جرّب بنفسك

input = gets.chomp

# TODO: case input ... when /^\d+$/, /@/, /^[A-Z]/ ... else ... end
quiz iconاختبر نفسك

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

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