map ו-collect
חלק מהיחידה יסודות במסלול ה-Ruby של Coddy. שיעור 68 מתוך 88.
בעוד ש-each מצוינת לביצוע פעולות על איברים, לפעמים רוצים להפוך מערך למערך חדש. המתודה map (שנקראת גם collect) עושה בדיוק את זה: היא יוצרת מערך חדש שמכיל את התוצאות של הפעלת הבלוק שלך על כל איבר.
numbers = [1, 2, 3, 4]
doubled = numbers.map { |n| n * 2 }
puts doubled # פלט: 2, 4, 6, 8ההבדל העיקרי לעומת each הוא ש־map מחזירה מערך חדש עם הערכים שעברו שינוי. המערך המקורי נשאר ללא שינוי.
הנה דוגמה מעשית שממירה טמפרטורות מצלזיוס לפרנהייט:
celsius = [0, 20, 100]
fahrenheit = celsius.map { |c| c * 9 / 5 + 32 }
puts fahrenheit # פלט: 32, 68, 212אפשר להשתמש ב־map גם עם מחרוזות:
names = ["alice", "bob"]
capitalized = names.map { |name| name.capitalize }
puts capitalized # פלט: Alice, Bobהמתודות map ו־collect זהות. Ruby מספקת את שני השמות, כך שתוכל להשתמש בזה שנראה לך מתאים יותר בקוד שלך. רוב מפתחי Ruby מעדיפים את map כי הוא קצר יותר.
אתגר
קלקרא שורת קלט יחידה המכילה מספרים שלמים המופרדים בפסיקים (לדוגמה, 2,4,6,8,10).
פצל את הקלט למערך של מספרים שלמים, ואז השתמש בשיטה map כדי ליצור מערך חדש שבו כל מספר מועלה בריבוע (מוכפל בעצמו).
הדפס כל איבר במערך החדש של המספרים בריבוע בשורה נפרדת.
לדוגמה, אם הקלט הוא 2,4,6,8,10, הפלט צריך להיות:
4
16
36
64
100אם הקלט הוא 1,2,3,4,5, הפלט צריך להיות:
1
4
9
16
25אם הקלט הוא 3,7,11, הפלט צריך להיות:
9
49
121אם הקלט הוא 10, הפלט צריך להיות:
100נסו בעצמכם
# קראו את הקלט המופרד בפסיקים
input = gets.chomp
# TODO: כתבו את הקוד שלכם למטה
# 1. פצלו את מחרוזת הקלט למערך של מספרים שלמים
# 2. השתמשו במתודה map כדי להעלות כל מספר בריבוע
# 3. הדפיסו כל מספר בריבוע בשורה נפרדתהשיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה יסודות
4אופרטורים חלק 2
אופרטורים לוגיים חלק 1אופרטורים לוגיים חלק 2חזרה – לוגיקה פשוטהאופרטורים לוגיים חלק 3אופרטורים לוגיים חלק 42משתנים וטיפוסי נתונים
מספרים ומשתניםטיפוס הנתונים מחרוזתטיפוס הנתונים בוליאניטיפוס הנתונים Symbolבדיקת טיפוסי נתוניםמוסכמות שמותסיכום – יצירת משתנים8לולאות
לולאת for עם טווחיםלולאת whilebreaknextסיכום – עצרתלולאת timesלולאת untilלולאות מקוננותסיכום – קלט דינמי3אופרטורים חלק 1
אופרטורים אריתמטייםאופרטור מודולוקיצורי דרך אריתמטייםסיכום – חשבון פשוטאופרטורי השוואה6קלט ופלט בסיסיים
פלט באמצעות putsפלט באמצעות print ו־pפלט באמצעות משתניםקלט באמצעות getsשיטת Chompהמרת טיפוסיםחזרה — מחשבון גילחזרה — אמת או שקר9מתודות
הגדרת מתודהפרמטרים של מתודהערכי החזרהסיכום - מתודת Sigmaסיכום - מתודת האימותערכי ברירת מחדל של פרמטרים15מעקב אחר הוצאות יומיות
סקירת הפרויקטיציאה מהתוכניתתרגלו בעצמכם: קומפיילר Ruby אונליין