Menu
Coddy logo textTech

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]
challenge icon

אתגר

קל

קרא קלט של רשימת מספרים שלמים המופרדים בפסיקים. הדפס שתי שורות:

  1. כל מספר כפול 2, כשהמספרים מחוברים באמצעות , . השתמש בצורה עם סוגריים מסולסלים של map.
  2. את המחרוזת "<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
quiz iconבחנו את עצמכם

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

כל השיעורים ביחידה לוגיקה וזרימת תוכנית

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