デフォルト引数
CoddyのRubyジャーニー「基礎」セクションの一部。レッスン 53/88。
引数が指定されなかった場合に、メソッドに適切な既定値を設定したいことがあります。デフォルトのパラメーター値を使うと、呼び出し元が指定しなかった場合にパラメーターに設定する値を定義できます。
デフォルト値を設定するには、パラメーター名の後に=記号を使います。
def greet(name = "friend")
puts "Hello, #{name}!"
end
greet("Alice") # 出力: Hello, Alice!
greet # 出力: Hello, friend!引数を指定せずにgreetを呼び出すと、Rubyはデフォルトとして"friend"を使います。引数を指定すると、デフォルト値が上書きされます。
通常の引数とデフォルト値のある引数を混在させることができます。デフォルト値のある引数は、通常はデフォルト値のない引数の後に置きます。また、デフォルト値のある2つの引数の間に通常の引数を置くことはできません。
def power(base, exponent = 2)
base ** exponent
end
puts power(5) # 出力: 25(5 の2乗)
puts power(2, 3) # 出力: 8(2 の3乗)これにより、メソッドの柔軟性が高まります。呼び出し側は必須の情報だけを渡し、省略可能な詳細には妥当な既定値を適用できます。
チャレンジ
簡単multiplyという名前のメソッドを定義し、aとbの2つのパラメーターを受け取るようにします。パラメーターbのデフォルト値は1にします。このメソッドはaとbの積を返す必要があります。
入力から2つの整数を読み取ります。
- 1つ目の数値(必ず入力されます)
- 2つ目の数値(入力される場合とされない場合があります)
入力が1つだけの場合は、その引数だけを使ってメソッドを呼び出します(bにはデフォルト値を使用します)。入力が2つある場合は、両方の引数を使ってメソッドを呼び出します。
メソッド呼び出しの結果を出力します。
入力形式は次のとおりです。
- 1行目:1つ目の数値
- 2行目:数値、または
none
たとえば、入力が7と3の場合:
21入力が5とnoneの場合:
5入力が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オンラインコンパイラ