Rubyにおける引数の使い方について説明します。Rubyもほかのプログラミング言語と同様に、引数を使うことでメソッド内で任意のデータを扱うことができます。
引数とは?
引数とは、メソッドに対して外部から値を渡すための仕組みです。以下より具体例をあげて説明していきます。
引数を使わないメソッド定義
例えば、数値を2倍にするという単純なメソッドを定義するとします。
引数を使わないと、以下のようにあらかじめ決められた値(この場合は10)を2倍にする処理しかできません。
1 2 3 4 5 6 7 8 |
#メソッド定義 def calc() return 10 * 2 end #calcメソッドを呼び出しputsで表示 puts calc() #=>20 |
これでは、例えば5を2倍にしたいという時には使うことができません。そこで、必要になるのが引数です。
引数を使ったメソッド定義
次に引数を使ったメソッド定義の例です。引数つきのメソッド定義は以下のような書式です。引数はいくつでも定義することができます。
1 2 3 |
def メソッド名(引数1, 引数2...) end |
先ほどの、数値を2倍にするメソッドを引数つきで定義すると以下のようになります。
1 2 3 4 |
#メソッド定義 def calc(number) return number * 2 end |
calc(number)の部分で、calcメソッドに対してnumberという引数を渡すと定義しています。
そして、メソッド内では number * 2で、渡された引数を2倍にしています。
引数つきのメソッド呼び出し
次にメソッドを引数つきで呼び出すのは、以下のような書式になります。
1 |
メソッド名(値1,値2...) |
先ほど定義したcalcメソッドを引数つきで呼び出すのは、以下のようになります。
1 2 3 |
#calcメソッドを呼び出しputsで表示 puts calc(10) #=>20 |
引数で渡された値10はメソッドの変数numberに代入され、 number * 2の部分で、2倍にされます。
こうすることで、任意の値を2倍にするメソッドを定義することができました。
引数を使う意味
このように、引数を使うことで外部からメソッドに値を渡すことができ、メソッドがより汎用的になります。もちろん、全てのメソッドで引数を絶対に使う必要はありません。
1 2 3 |
#メソッドを呼び出して表示 puts calc(10) #=>20 |
引数が複数あるメソッド
上記では、メソッドの引数は1つでしたが、複数の引数を設定することもできます。
今度は値を2倍ではなく、任意の倍数にするというメソッドの例です。引数を複数定義する場合は、以下のようにカンマ(,)で区切ります。また、メソッドの呼び出しも、カンマで区切ります。
1 2 3 4 5 6 7 8 |
#メソッド定義 def calc(number1, number2) return number1 * number2 end #メソッドの呼び出し puts calc(10, 3) #=> 30 |
上記の例の場合は、10と3が引数として渡されているので、「10 × 3」で30が返り値となります。
引数のデフォルト値
また、引数にはデフォルト値を設定することもできます。メソッドの呼び出しで引数を渡さない場合は、このデフォルト値が引数の値となります。
デフォルト値を設定する場合の書式は、以下のようになります。すべての引数にデフォルト値を設定することもできますし、どれか1つだけデフォルト値を設定することもできます。
通常、メソッド定義ではデフォルト値のない引数を先に並べ、デフォルト値のある引数はその後に書くことが多いです。
1 |
def メソッド名(引数1 = デフォルト値1, 引数2 = デフォルト値2) |
先ほどのcalcメソッドの引数number2にデフォルト値として2を設定します。
1 2 3 |
def calc(number1, number2 = 2) return number1 * number2 end |
以下は、引数を渡す場合と、引数を渡さずにデフォルト値を使う例です。
1 2 3 4 5 6 7 |
#引数を渡す場合 puts calc(10, 3) #=> 30 #number2に値を渡さない場合 puts calc(10) #=> 20 |
引数を渡さない場合は、引数number2はデフォルト値の2が代入され、「10 × 2」で20となることがわかります。
なお、デフォルト値が設定されていない引数を省略すると「wrong number of arguments」といったエラーとなるので気をつけてください。