Menu
Coddy logo textTech

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 כי הוא קצר יותר.

challenge icon

אתגר

קל

קרא שורת קלט יחידה המכילה מספרים שלמים המופרדים בפסיקים (לדוגמה, 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. הדפיסו כל מספר בריבוע בשורה נפרדת
quiz iconבחנו את עצמכם

השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.

כל השיעורים ביחידה יסודות

תרגלו בעצמכם: קומפיילר Ruby אונליין