Menu
CoddyTech

ערכי ברירת מחדל של פרמטרים

חלק מהיחידה יסודות במסלול ה-Ruby של Coddy. שיעור 53 מתוך 88.

לפעמים רוצים שלמתודה תהיה ברירת מחדל הגיונית כשלא מספקים ארגומנט. ערכי פרמטרים כברירת מחדל מאפשרים להגדיר מה יהיה ערכו של פרמטר אם הקורא לא מציין אותו.

כדי להגדיר ערך ברירת מחדל, השתמשו בסימן = אחרי שם הפרמטר:

def greet(name = "friend")
  puts "Hello, #{name}!"
end

greet("Alice")  # פלט: Hello, Alice!
greet           # פלט: Hello, friend!

כשקוראים ל־greet בלי ארגומנט, Ruby משתמשת ב־"friend" כברירת מחדל. כשמספקים ארגומנט, הוא מחליף את ערך ברירת המחדל.

אפשר לשלב פרמטרים רגילים עם פרמטרים בעלי ערכי ברירת מחדל. פרמטרים בעלי ערכי ברירת מחדל מופיעים בדרך כלל אחרי הפרמטרים שאין להם ערכי ברירת מחדל, ופרמטר רגיל לא יכול להופיע בין שני פרמטרים בעלי ערכי ברירת מחדל:

def power(base, exponent = 2)
  base ** exponent
end

puts power(5)     # פלט: 25 (5 בריבוע)
puts power(2, 3)  # פלט: 8 (2 בחזקה שלישית)

הדבר הופך מתודות לגמישות יותר. מי שקוראים להן יכולים לספק רק את המידע החיוני, בעוד שפרטים אופציונליים מקבלים ערכי ברירת מחדל סבירים.

challenge icon

אתגר

קל

הגדירו מתודה בשם multiply שמקבלת שני פרמטרים: a ו־b. לפרמטר b צריך להיות ערך ברירת מחדל של 1. המתודה צריכה להחזיר את המכפלה של a ו־b.

קראו שני מספרים שלמים מהקלט:

  1. המספר הראשון (תמיד יינתן)
  2. המספר השני (ייתכן שיינתן וייתכן שלא)

אם ניתן קלט אחד בלבד, קראו למתודה עם הארגומנט הזה בלבד (תוך שימוש בערך ברירת המחדל של b). אם ניתנו שני קלטים, קראו למתודה עם שני הארגומנטים.

הדפיסו את התוצאה של הקריאה למתודה.

פורמט הקלט יהיה:

  • שורה ראשונה: המספר הראשון
  • שורה שנייה: מספר או המילה none

לדוגמה, אם הקלט הוא 7 ו־3:

21

אם הקלט הוא 5 ו־none:

5

אם הקלט הוא 12 ו־4:

48

נסו בעצמכם

# קרא את הקלט
a = gets.chomp.to_i
b_input = gets.chomp

# TODO: הגדר את המתודה multiply כך שלפרמטר b יהיה ערך ברירת מחדל של 1


# TODO: קרא למתודה בהתאם לשאלה אם b_input הוא "none" או מספר
# אם b_input הוא "none", קרא ל-multiply עם a בלבד
# אם b_input הוא מספר, קרא ל-multiply עם a ו-b

# הדפס את התוצאה
puts result
quiz iconבחנו את עצמכם

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

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

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