each עם אינדקס
חלק מהיחידה יסודות במסלול ה-Ruby של Coddy. שיעור 66 מתוך 88.
לפעמים צריך לדעת לא רק מהו האיבר שאיתו עובדים, אלא גם מהו מיקומו במערך. המתודה each_with_index של Ruby נותנת לך גם את האיבר וגם את האינדקס שלו באיטרציה אחת.
כך זה עובד:
fruits = ["apple", "banana", "cherry"]
fruits.each_with_index do |fruit, index|
puts "#{index}: #{fruit}"
endהפלט הוא:
0: apple
1: banana
2: cherryשימו לב שהבלוק מקבל כעת שני משתנים בין הקווים האנכיים: תחילה מופיע האיבר, ולאחריו האינדקס. האינדקס מתחיל ב־0, בדיוק כמו כשניגשים ישירות לאיברי המערך.
הדבר שימושי במיוחד כשצריך להציג רשימות ממוספרות או לעקוב אחר מיקומים:
tasks = ["Buy groceries", "Clean room", "Call mom"]
tasks.each_with_index do |task, i|
puts "Task #{i + 1}: #{task}"
endעל ידי הוספת 1 לאינדקס, אנחנו יוצרים רשימה ממוספרת וידידותית לבני אדם שמתחילה מ-1 במקום מ-0. המתודה each_with_index מבטלת את הצורך לעקוב ידנית אחר משתנה מונה, וכך הקוד שלך נקי יותר ופחות מועד לשגיאות.
אתגר
קלקרא שורת קלט אחת שמכילה מילים המופרדות בפסיקים (למשל, apple,banana,cherry,date).
פצל את הקלט למערך של מחרוזות, ואז השתמש ב־each_with_index כדי להדפיס כל פריט כרשימה ממוספרת שמתחילה ב־1 (ולא ב־0).
כל שורה צריכה להיות בפורמט הזה: Item 1: apple
לדוגמה, אם הקלט הוא apple,banana,cherry,date, הפלט צריך להיות:
Item 1: apple
Item 2: banana
Item 3: cherry
Item 4: dateאם הקלט הוא red,green,blue, הפלט צריך להיות:
Item 1: red
Item 2: green
Item 3: blueאם הקלט הוא monday,tuesday,wednesday,thursday,friday, הפלט צריך להיות:
Item 1: monday
Item 2: tuesday
Item 3: wednesday
Item 4: thursday
Item 5: fridayאם הקלט הוא solo, הפלט צריך להיות:
Item 1: soloנסו בעצמכם
# קראו את הקלט המופרד בפסיקים
input = gets.chomp
# פצלו את הקלט למערך
items = input.split(",")
# TODO: השתמשו ב-each_with_index כדי להדפיס כל פריט ברשימה ממוספרת
# זכרו: האינדקס מתחיל ב-0, אבל יש להציג את המספור החל מ-1
# תבנית: "Item 1: apple"השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה יסודות
4אופרטורים חלק 2
אופרטורים לוגיים חלק 1אופרטורים לוגיים חלק 2חזרה – לוגיקה פשוטהאופרטורים לוגיים חלק 3אופרטורים לוגיים חלק 42משתנים וטיפוסי נתונים
מספרים ומשתניםטיפוס הנתונים מחרוזתטיפוס הנתונים בוליאניטיפוס הנתונים Symbolבדיקת טיפוסי נתוניםמוסכמות שמותסיכום – יצירת משתנים8לולאות
לולאת for עם טווחיםלולאת whilebreaknextסיכום – עצרתלולאת timesלולאת untilלולאות מקוננותסיכום – קלט דינמי3אופרטורים חלק 1
אופרטורים אריתמטייםאופרטור מודולוקיצורי דרך אריתמטייםסיכום – חשבון פשוטאופרטורי השוואה6קלט ופלט בסיסיים
פלט באמצעות putsפלט באמצעות print ו־pפלט באמצעות משתניםקלט באמצעות getsשיטת Chompהמרת טיפוסיםחזרה — מחשבון גילחזרה — אמת או שקר9מתודות
הגדרת מתודהפרמטרים של מתודהערכי החזרהסיכום - מתודת Sigmaסיכום - מתודת האימותערכי ברירת מחדל של פרמטרים15מעקב אחר הוצאות יומיות
סקירת הפרויקטיציאה מהתוכניתתרגלו בעצמכם: קומפיילר Ruby אונליין