האיטרטור each
חלק מהיחידה יסודות במסלול ה-Ruby של Coddy. שיעור 65 מתוך 88.
Ruby מספקת דרך אלגנטית יותר לעבור בלולאה על מערכים מאשר להשתמש בלולאות for או while. האיטרטור each הוא הדרך המועדפת ב-Ruby לעבד כל איבר באוסף.
הנה התחביר הבסיסי:
fruits = ["apple", "banana", "cherry"]
fruits.each do |fruit|
puts fruit
endפעולה זו מציגה כל פרי בשורה נפרדת. המשתנה שבין הקווים האנכיים (|fruit|) נקרא משתנה בלוק. הוא מחזיק באופן זמני כל איבר בזמן שהאיטרטור עובר דרך המערך.
עבור בלוקים בני שורה אחת, אפשר להשתמש בסוגריים מסולסלים במקום do...end:
numbers = [1, 2, 3]
numbers.each { |n| puts n * 2 }המתודה each עוצמתית, כי אפשר לבצע כל פעולה על כל איבר. הנה דוגמה שמחשבת סכום מצטבר:
prices = [10, 25, 15]
total = 0
prices.each do |price|
total += price
end
puts total # פלט: 50בניגוד ללולאות for, משתנה הבלוק ב־each נשאר תחום בתוך הבלוק, וכך הקוד שלך נשאר נקי יותר ופחות חשוף להתנהגות בלתי צפויה.
אתגר
קלקרא שורת קלט אחת שמכילה מספרים שלמים המופרדים בפסיקים (למשל, 4,7,2,9,5).
פצל את הקלט למערך של מספרים שלמים, ואז השתמש באיטרטור each כדי:
- להדפיס כל מספר כפול 3 בשורה נפרדת
- לחשב את הסכום של כל המספרים ולהדפיס אותו אחרי הלולאה
השתמש במשתנה שמאותחל ל־0 לפני הלולאה כדי לצבור את הסכום תוך כדי מעבר על המערך.
לדוגמה, אם הקלט הוא 4,7,2,9,5, הפלט צריך להיות:
12
21
6
27
15
Sum: 27אם הקלט הוא 10,20,30, הפלט צריך להיות:
30
60
90
Sum: 60אם הקלט הוא 1,2,3,4, הפלט צריך להיות:
3
6
9
12
Sum: 10אם הקלט הוא 5, הפלט צריך להיות:
15
Sum: 5נסו בעצמכם
# קראו את המספרים השלמים המופרדים בפסיקים
input = gets.chomp
# פצלו את הקלט למערך של מספרים שלמים
numbers = input.split(",").map(&:to_i)
# אתחלו את המשתנה sum
sum = 0
# TODO: כתבו את הקוד שלכם למטה
# השתמשו באיטרטור each כדי:
# 1. להדפיס כל מספר כפול 3
# 2. להוסיף כל מספר למשתנה sum
# הדפיסו את הסכום הסופי
puts "Sum: #{sum}"השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה יסודות
4אופרטורים חלק 2
אופרטורים לוגיים חלק 1אופרטורים לוגיים חלק 2חזרה – לוגיקה פשוטהאופרטורים לוגיים חלק 3אופרטורים לוגיים חלק 42משתנים וטיפוסי נתונים
מספרים ומשתניםטיפוס הנתונים מחרוזתטיפוס הנתונים בוליאניטיפוס הנתונים Symbolבדיקת טיפוסי נתוניםמוסכמות שמותסיכום – יצירת משתנים8לולאות
לולאת for עם טווחיםלולאת whilebreaknextסיכום – עצרתלולאת timesלולאת untilלולאות מקוננותסיכום – קלט דינמי3אופרטורים חלק 1
אופרטורים אריתמטייםאופרטור מודולוקיצורי דרך אריתמטייםסיכום – חשבון פשוטאופרטורי השוואה6קלט ופלט בסיסיים
פלט באמצעות putsפלט באמצעות print ו־pפלט באמצעות משתניםקלט באמצעות getsשיטת Chompהמרת טיפוסיםחזרה — מחשבון גילחזרה — אמת או שקר9מתודות
הגדרת מתודהפרמטרים של מתודהערכי החזרהסיכום - מתודת Sigmaסיכום - מתודת האימותערכי ברירת מחדל של פרמטרים15מעקב אחר הוצאות יומיות
סקירת הפרויקטיציאה מהתוכניתתרגלו בעצמכם: קומפיילר Ruby אונליין