Menu
Coddy logo textTech

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

חלק מהיחידה יסודות במסלול ה-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 בחזקת 3)

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

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 אונליין