Rubyにおける引数

Rubyにおける引数の使い方について説明します。Rubyもほかのプログラミング言語と同様に、引数を使うことでメソッド内で任意のデータを扱うことができます。

引数とは?

引数とは、メソッドに対して外部から値を渡すための仕組みです。以下より具体例をあげて説明していきます。

引数を使わないメソッド定義

例えば、数値を2倍にするという単純なメソッドを定義するとします。 引数を使わないと、以下のようにあらかじめ決められた値(この場合は10)を2倍にする処理しかできません。
#メソッド定義
def calc()
  return 10 * 2
end

#calcメソッドを呼び出しputsで表示
puts calc()
#=>20
これでは、例えば5を2倍にしたいという時には使うことができません。そこで、必要になるのが引数です。

引数を使ったメソッド定義

次に引数を使ったメソッド定義の例です。引数つきのメソッド定義は以下のような書式です。引数はいくつでも定義することができます。
def メソッド名(引数1, 引数2...)

end
先ほどの、数値を2倍にするメソッドを引数つきで定義すると以下のようになります。
#メソッド定義
def calc(number)
  return number * 2
end
calc(number)の部分で、calcメソッドに対してnumberという引数を渡すと定義しています。 そして、メソッド内ではnumber * 2で、渡された引数を2倍にしています。

引数つきのメソッド呼び出し

次にメソッドを引数つきで呼び出すのは、以下のような書式になります。
メソッド名(値1,値2...)
先ほど定義したcalcメソッドを引数つきで呼び出すのは、以下のようになります。
#calcメソッドを呼び出しputsで表示
puts calc(10)
#=>20
引数で渡された値10はメソッドの変数numberに代入され、number * 2の部分で、2倍にされます。 こうすることで、任意の値を2倍にするメソッドを定義することができました。

引数を使う意味

このように、引数を使うことで外部からメソッドに値を渡すことができ、メソッドがより汎用的になります。もちろん、全てのメソッドで引数を絶対に使う必要はありません。

#メソッドを呼び出して表示
puts calc(10)
#=>20

引数が複数あるメソッド

上記では、メソッドの引数は1つでしたが、複数の引数を設定することもできます。 今度は値を2倍ではなく、任意の倍数にするというメソッドの例です。引数を複数定義する場合は、以下のようにカンマ(,)で区切ります。また、メソッドの呼び出しも、カンマで区切ります。
#メソッド定義
def calc(number1, number2)
  return number1 * number2
end

#メソッドの呼び出し
puts calc(10, 3)
#=> 30
上記の例の場合は、10と3が引数として渡されているので、「10 × 3」で30が返り値となります。

引数のデフォルト値

また、引数にはデフォルト値を設定することもできます。メソッドの呼び出しで引数を渡さない場合は、このデフォルト値が引数の値となります。 デフォルト値を設定する場合の書式は、以下のようになります。すべての引数にデフォルト値を設定することもできますし、どれか1つだけデフォルト値を設定することもできます。 通常、メソッド定義ではデフォルト値のない引数を先に並べ、デフォルト値のある引数はその後に書くことが多いです。
def メソッド名(引数1 = デフォルト値1, 引数2 = デフォルト値2)
先ほどのcalcメソッドの引数number2にデフォルト値として2を設定します。
def calc(number1, number2 = 2)
  return number1 * number2
end
以下は、引数を渡す場合と、引数を渡さずにデフォルト値を使う例です。

#引数を渡す場合
puts calc(10, 3)
#=> 30

#number2に値を渡さない場合
puts calc(10)
#=> 20
引数を渡さない場合は、引数number2はデフォルト値の2が代入され、「10 × 2」で20となることがわかります。 なお、デフォルト値が設定されていない引数を省略すると「wrong number of arguments」といったエラーとなるので気をつけてください。