do..end לעומת סוגריים מסולסלים
חלק מהיחידה לוגיקה וזרימת תוכנית במסלול ה-Ruby של Coddy. שיעור 16 מתוך 56.
Ruby נותנת לך שתי דרכים לכתוב בלוק. משמעותן זהה, אבל לכל אחת יש מקרה שימוש מועדף.
do...end מיועד לבלוקים רב־שורתיים:
[1, 2, 3].each do |n|
doubled = n * 2
puts "#{n} -> #{doubled}"
endסוגריים מסולסלים { ... } מיועדים לבלוקים חד-שורתיים, קצרים ובצורת ביטוי:
[1, 2, 3].each { |n| puts n * 2 }לשניהם יש קדימות מעט שונה, אבל הכלל שעל הלומדים להכיר קשור לסגנון: סוגריים מסולסלים לשורה אחת, do...end לכמה שורות.
שתי הצורות יכולות להחזיר ערך. הביטוי האחרון בבלוק הוא מה שמועבר בחזרה למתודות כמו map:
[1, 2, 3].map { |n| n * 10 } # [10, 20, 30]
[1, 2, 3].map do |n|
n * 10
end # [10, 20, 30]אתגר
קלקרא קלט של רשימת מספרים שלמים המופרדים בפסיקים. הדפס שתי שורות:
- כל מספר כפול 2, כשהמספרים מחוברים באמצעות
,. השתמש בצורה עם סוגריים מסולסלים שלmap. - את המחרוזת
"<n> squared is <n*n>"עבור כל מספר, שורה אחת לכל מספר. השתמש בצורהdo...endשלeach.
עבור הקלט 1,2,3, הפלט הוא:
2, 4, 6
1 squared is 1
2 squared is 4
3 squared is 9נסו בעצמכם
numbers = gets.chomp.split(",").map(&:to_i)
# TODO: שורה 1, ערכים מוכפלים פי שניים, הצורה עם סוגריים מסולסלים של map, מחוברים באמצעות ", "
# TODO: שורות 2..n, ריבועים, הצורה do...end של each
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה לוגיקה וזרימת תוכנית
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 אונליין