デフォルト引数
CoddyのRubyジャーニー「基礎」セクションの一部。レッスン 53/88。
引数が指定されなかった場合に、メソッドに適切なフォールバックを設定したいことがあります。デフォルトパラメーター値を使用すると、caller が指定しなかった場合にパラメーターがどうあるべきかを定義できます。
デフォルト値を設定するには、パラメータ名の後に=記号を使用します。
def greet(name = "friend")
puts "Hello, #{name}!"
end
greet("Alice") # 出力: Hello, Alice!
greet # 出力: Hello, friend!引数なしでgreetを呼び出すと、Rubyはデフォルトとして「friend」を使用します。引数を指定すると、デフォルトが上書きされます。
通常のparameterとdefaultのparameterを組み合わせることはできますが、defaultのあるparameterは、defaultのないparameterの後に置く必要があります:
def power(base, exponent = 2)
base ** exponent
end
puts power(5) # 出力: 25 (5の2乗)
puts power(2, 3) # 出力: 8 (2の3乗)これにより、メソッドの柔軟性が高まります。呼び出し側は必要不可欠な情報だけを指定でき、オプションの詳細には妥当なデフォルト値が適用されます。
チャレンジ
簡単multiplyという名前のmethodを定義します。このmethodは、aとbという2つのparameterを受け取ります。parameter bのdefault valueは1とします。このmethodは、aとbの積を返します。
inputから2つの整数を読み取ります。
- 1つ目のnumber(必ず提供されます)
- 2つ目のnumber(提供される場合と、されない場合があります)
inputが1つだけ提供された場合は、その引数だけを使ってmethodをCallします(bのdefault valueを使用します)。inputが2つ提供された場合は、両方の引数を使ってmethodをCallします。
methodのCall結果をPrintします。
input formatは次のとおりです。
- 1行目:1つ目のnumber
- 2行目:numberまたは
none
たとえば、inputが7と3の場合:
21inputが5とnoneの場合:
5inputが12と4の場合:
48自分で試してみよう
# 入力を読み取る
a = gets.chomp.to_i
b_input = gets.chomp
# TODO: パラメータ b のデフォルト値を 1 として multiply メソッドを定義する
# TODO: b_input が "none" か数値かに基づいて適切にメソッドを呼び出す
# b_input が "none" の場合、a のみで multiply を呼び出す
# b_input が数値の場合、a と b の両方で multiply を呼び出す
# 結果を出力する
puts resultこのレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
基礎のすべてのレッスン
自分で練習してみよう: Rubyオンラインコンパイラ