Menu
Coddy logo textTech

מהו בלוק?

חלק מהיחידה לוגיקה וזרימת תוכנית במסלול ה-Ruby של Coddy. שיעור 15 מתוך 56.

כבר כתבת בלוקים. בכל פעם שכתבת each do |x| ... end, החלק שבין do ל-end היה בלוק: קטע קוד שמועבר למתודה.

[1, 2, 3].each do |n|
  puts n * 2
end

כאן, each היא מתודה של המערך, ו-do |n| ... end הוא הבלוק. each מריצה את הבלוק פעם אחת עבור כל איבר, ומעבירה אותו בתור n.

בלוקים אינם אובייקטים נפרדים ששומרים במשתנים; הם קשורים ישירות לקריאה למתודה. מתודה מקבלת בלוק או לא, ורוב מתודות האיטרציה (each, map, select, times) מיועדות לקבל אחד.

3.times do |i|
  puts "hi #{i}"
end

קריאה למתודה בלי הבלוק שלה משנה את מה שהיא עושה. [1,2,3].map ללא בלוק מחזירה enumerator במקום מערך שעבר טרנספורמציה, ולכן הבלוק הוא חלק מהמשמעות של המתודה.

challenge icon

אתגר

מתחילים

קרא מספר שלם n מהקלט. השתמש בשיטה times עם בלוק כדי להדפיס את ההודעה Iteration <i> עבור כל ערך של i מ־0 ועד n - 1.

עבור הקלט 3, הפלט הוא:

Iteration 0
Iteration 1
Iteration 2

נסו בעצמכם

n = gets.to_i

# TODO: השתמשו ב־n.times עם בלוק כדי להדפיס כל איטרציה
quiz iconבחנו את עצמכם

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

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

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