Menu
Coddy logo textTech

デフォルト引数

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乗)

これにより、メソッドの柔軟性が高まります。呼び出し側は必要不可欠な情報だけを指定でき、オプションの詳細には妥当なデフォルト値が適用されます。

challenge icon

チャレンジ

簡単

multiplyという名前のmethodを定義します。このmethodは、abという2つのparameterを受け取ります。parameter bのdefault valueは1とします。このmethodは、abの積を返します。

inputから2つの整数を読み取ります。

  1. 1つ目のnumber(必ず提供されます)
  2. 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が73の場合:

21

inputが5noneの場合:

5

inputが124の場合:

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
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

基礎のすべてのレッスン

自分で練習してみよう: Rubyオンラインコンパイラ