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.
אתגר
קלקרא שורת קלט אחת. השתמש בהוראת 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
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה לוגיקה וזרימת תוכנית
1מחרוזות לעומק
סקירה של מתודות למחרוזותאינטרפולציה של מחרוזותמעבר על מחרוזותפיצול וחיבורסיכום – שוזר המחרוזות4בלוקים, Procs ו־Lambdas
מהו בלוק?do..end לעומת סוגריים מסולסליםמילת המפתח yieldפרמטרים של בלוקProcs ו־Lambdasסיכום – איטרטור מותאם אישית7Hashes חלק 2
Hash.new עם ערכי ברירת מחדלמעבר על HashesHashes מקונניםמיזוג ושינויסיכום - מונה תדירויות10פרויקט - רשומות תלמידים
סקירת הפרויקטהוספת תלמיד5עוצמת Enumerable
Select ו־Rejectשרשור MapReduce / Injectcount, all?, any?, none?group_by ו־partitionsort_by, min_by, max_byסיכום - צינור נתונים8קבלת החלטות מתקדמת
case עם מחלקות ו־Regexwhen עם ערכים מרוביםהאופרטור הטרנריif / unless בשורה אחתסיכום – מסווג ציוניםתרגלו בעצמכם: קומפיילר Ruby אונליין