Menu
Coddy logo textTech

case עם מחלקות ו־Regex

חלק מהיחידה לוגיקה וזרימת תוכנית במסלול ה-Ruby של Coddy. שיעור 38 מתוך 56.

השתמשת ב-case עם טווחים. אותה הצהרה גם מתאימה מול מחלקות וביטויים רגולריים: בשני המקרים באמצעות האופרטור === ש-when קוראת מאחורי הקלעים.

התאימו לפי מחלקה כדי לבחור מסלול פעולה בהתאם לסוג הערך שקיבלתם:

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")    # קצת טקסט

התאם מול ביטוי רגולרי כדי לבחור מסלול לפי הצורה של מחרוזת — מספר טלפון, כתובת אימייל, תאריך:

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.

נסו בעצמכם

input = gets.chomp

# TODO: case input ... when /^\d+$/, /@/, /^[A-Z]/ ... else ... end
quiz iconבחנו את עצמכם

השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.

כל השיעורים ביחידה לוגיקה וזרימת תוכנית

תרגלו בעצמכם: קומפיילר Ruby אונליין