引数とは
引数とは、メソッドに与える追加情報のようなものと考えてください。
メソッドを呼び出すときに一緒に引数を渡すことで、「メソッドに変数の値を渡す」ことができます。
例えば、「"変数名(fruit)"を細かく砕く」という文字列を出力するmixerというメソッドを定義したとします。(ここではfruit = "リンゴ"とします)
これを引数を使わずに出力すると
def mixer
fruit = "リンゴ"
puts "#{fruit}を細かく砕く"
end
puts mixer
と書き
リンゴを細かく砕く
と出力されます。
メソッド内では、メソッド内で定義した変数しか使えないため、「梨を細かく砕く」という文字列を書くメソッドに変更したい場合には
def mixer
fruit = "梨" #ここを変更する必要がある
puts "#{fruit}を細かく砕く"
end
puts mixer
このようにメソッド内の変数を書き直す必要があります。
これだと、
リンゴを細かく砕く
梨を細かく砕く
という2つ文字列を出力したい場合には、新たにメソッドを追加するかメソッドを2つ文字列を出力するように定義し直す必要がありコードが見づらくなったり、メソッドの役割が変わってしまいます。
そこで、引数が登場するわけです。
冒頭でも言いましたが、引数とはメソッドに与える追加情報のようなものです。
上記のように「リンゴ」「梨」をそれぞれ細かく砕く文字列を出力したい場合には
def mixer(fruit) #仮引数
puts "#{fruit}を細かく砕く" #変数
end
puts mixer("リンゴ") #本引数
puts mixer("梨") #本引数
と書くことで
リンゴを細かく砕く
梨を細かく砕く
のように出力することができます。
これならメソッドの役割は「"変数名(fruit)"を細かく砕く」という文字列を出力するまま変わっておらず、異なる引数を持つ puts mixer を追加するだけで良いのでコードもスッキリしています。
|本引数と仮引数|
引数を使ったコードを見るとわかるかと思いますが、引数は「メソッドを呼び出す部分」と「メソッドを定義している部分」両方に書く必要があります。
このとき、メソッドを呼び出す際に書く引数を本引数と呼びメソッドの呼び出し時は、以下のように書きます。
メソッド名(本引数)
上のコードで言うところの
puts mixer("リンゴ") #本引数
puts mixer("梨") #本引数
この部分ですね!
一方で、メソッドを定義している部分に書く引数のことを仮引数と言います。
メソッドを定義している部分には、以下のように仮引数を書きます。メソッドの処理の中では、引数として渡されたものを仮引数としてつけた名前で扱います。
def メソッド名(仮引数)
実行する処理
end
上のコードで言うところの
def mixer(fruit) #仮引数
puts "#{fruit}を細かく砕く" #変数
end
この部分ですね!
まとめ
- メソッドを呼び出すときに一緒に引数を渡すことで、「メソッドに変数の値を渡す」ことができる。
- 引数は「メソッドを呼び出す部分」と「メソッドを定義している部分」両方に書く
- 「メソッドを呼び出す部分」に書く引数と「メソッドを定義している部分」に書く引数の名前は、一致している必要はない