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 # סוף שבועזה הרבה יותר נקי מאשר לשרשר || בתוך if/elsif.
אפשר גם לערבב סוגי ערכים ב־when אחד: מחרוזות, טווחים, תבניות regex — כולם פשוט דברים שמגיבים ל־===:
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בחרו את הצורות שמקלות לקרוא כל ענף במבט חטוף.
אתגר
קלקרא תו יחיד (שורת קלט אחת). השתמש ב־case עם ענפי when מרובי־ערכים כדי להדפיס אחד מהבאים:
vowel: הקלט הוא אחד מ־a, e, i, o, u(ללא הבחנה בין אותיות גדולות לקטנות; המר תחילה את הקלט לאותיות קטנות)digit: הקלט הוא אחד מ־0..9(השתמש בטווח)punctuation: הקלט הוא אחד מ־.,,,!,?other: כל דבר אחר
התייחס לקלט כמחרוזת בת תו אחד. בדוק את ענף הספרות באמצעות טווח כמו "0".."9".
עבור הקלט E הפלט הוא vowel; עבור 7 הוא digit; עבור ! הוא punctuation.
נסו בעצמכם
ch = gets.chomp
# TODO: לממש case ch.downcase ... עם ענפי when בעלי ערכים מרובים
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה לוגיקה וזרימת תוכנית
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 אונליין