שרשור Map
חלק מהיחידה לוגיקה וזרימת תוכנית במסלול ה-Ruby של Coddy. שיעור 22 מתוך 56.
פגשת את map ביסודות; היא בונה מערך חדש על ידי שינוי של כל איבר. הכוח האמיתי שלה מתגלה כשמשלבים אותה עם select, עם reject ואחרות.
כל מתודה מחזירה מערך, לכן קריאה למתודה נוספת על התוצאה פשוט ממשיכה את השרשור:
numbers = [1, 2, 3, 4, 5]
result = numbers
.select { |n| n.odd? }
.map { |n| n * 10 }
puts result.inspect # [10, 30, 50]קראו את השרשרת מלמעלה למטה: התחילו במספרים, השאירו את האי־זוגיים, הכפילו כל אחד ב־10. בלי משתנים זמניים ובלי לולאה.
קיצור הדרך &:method_name עובד בכל פעם שהבלוק רק קורא למתודה אחת:
["hi", "yo"].map { |s| s.upcase } # ["HI", "YO"]
["hi", "yo"].map(&:upcase) # ["HI", "YO"] (אותו הדבר)הקיצור הזה מופיע בכל מקום בקוד Ruby. זהו אותו כשתראו אותו.
אתגר
קלקרא רשימת מילים המופרדות בפסיקים. הדפס בשורה אחת את המילים שאורכן עולה על 3 תווים, באותיות גדולות, כשהן מופרדות באמצעות , .
בנה זאת כשרשרת אחת: select את המילים הארוכות, הפעל עליהן map עם &:upcase, ואז join.
עבור הקלט hi,hello,yo,coddy,sup, הפלט הוא:
HELLO, CODDYנסו בעצמכם
words = gets.chomp.split(",")
# TODO: שרשר select + map(&:upcase) + join
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה לוגיקה וזרימת תוכנית
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 אונליין