Menu
Coddy logo textTech

デフォルト引数

CoddyのRubyジャーニー「基礎」セクションの一部 — レッスン 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の2乗)
puts power(2, 3)  # 出力: 8 (2の3乗)

これにより、メソッドの柔軟性が高まります。呼び出し側は必須の情報のみを提供でき、オプションの詳細は適切なデフォルト値にフォールバックされます。

challenge icon

チャレンジ

簡単

2つのパラメータ ab を受け取る multiply という名前のメソッドを定義してください。パラメータ b のデフォルト値は 1 とします。このメソッドは ab の積を返す必要があります。

入力から2つの整数を読み取ります:

  1. 最初の数値(常に提供されます)
  2. 2番目の数値(提供される場合とされない場合があります)

入力が1つだけ提供された場合は、その引数のみを使用してメソッドを呼び出します(b にはデフォルト値を使用します)。2つの入力が提供された場合は、両方の引数を使用してメソッドを呼び出します。

メソッド呼び出しの結果を出力してください。

入力形式は以下の通りです:

  • 1行目:最初の数値
  • 2行目:数値、または none という単語

例えば、入力が 73 の場合:

21

入力が 5none の場合:

5

入力が 124 の場合:

48

チートシート

デフォルトの引数値は、引数が渡されない場合のフォールバック値を提供します。デフォルト値を設定するには、パラメータ名の後に = 記号を使用します。

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

greet("Alice")  # 出力: Hello, Alice!
greet           # 出力: Hello, friend!

デフォルト値を持つパラメータは、デフォルト値を持たないパラメータの後に配置する必要があります。

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

puts power(5)     # 出力: 25 (5の2乗)
puts power(2, 3)  # 出力: 8 (2の3乗)

自分で試してみよう

# 入力を読み込む
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腕試し

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

基礎のすべてのレッスン