טווחים ב־case / when
חלק מהיחידה לוגיקה וזרימת תוכנית במסלול ה-Ruby של Coddy. שיעור 8 מתוך 56.
טווחים באים לידי ביטוי במיוחד בתוך פקודת case של Ruby. בעוד שבשפות רבות נדרשת שרשרת של if/elsif עם אופרטורי השוואה, Ruby מאפשרת לבדוק ערך ישירות מול טווחים.
score = 78
grade = case score
when 90..100 then "A"
when 80..89 then "B"
when 70..79 then "C"
when 60..69 then "D"
else "F"
end
puts grade # Cמאחורי הקלעים, when 70..79 משתמש באופרטור === של הטווח, השקול ל־(70..79).include?(score).
מבנה case קצר יותר, קל יותר לקריאה ומהיר יותר לכתיבה מסולם ארוך של if/elsif.
אתגר
קלקראו רשימה של גילאים שלמים, מופרדים בפסיקים. עבור כל גיל, סווגו אותו באמצעות פקודת case עם טווחים:
0..12:Child13..19:Teen20..64:Adult65ומעלה:Senior- כל ערך אחר (שלילי): מדלגים עליו, הוא לא נכנס לדוח
הדפיסו שורת ספירה עבור כל קטגוריה שאינה אפס, בסדר הקבוע הבא: Child, Teen, Adult, Senior. דלגו על קטגוריות שאין בהן אנשים. אחרי הספירות, הדפיסו Skipped: <n> כאשר n הוא מספר הגילאים השליליים (הלא תקינים).
עבור הקלט 5,15,30,70,-3,40,12, הפלט הוא:
Child: 2
Teen: 1
Adult: 2
Senior: 1
Skipped: 1נסו בעצמכם
ages = gets.chomp.split(",").map(&:to_i)
# TODO: לסווג כל גיל באמצעות case וטווחים, לספור לפי קטגוריה, להדפיס דוח
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה לוגיקה וזרימת תוכנית
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סיכום - צינור נתוניםתרגלו בעצמכם: קומפיילר Ruby אונליין