通常の引数
通常の引数をもつメソッド。当然ながら最も多く利用されると思われる。def print_message message print "[#{message}]" end
デフォルト値をもつ引数
デフォルト値をもつことでクライアントコードを簡略化できる。javaでオーバーロードを行い、引数の多いメソッドに固定値を渡すパターンの場合この実装で代用することが可能。
※rubyではオーバーロードを行うことができないので、デフォルト値を持つ引数をつかって実現するほかない。
# p2を省略するとデフォルト値の0が適用される。 def m1 p1, p2 = 0 p1 + p2 end m1 1 # p2を省略した場合 m1 1, 2 # 明示的に指定した場合 # p1を省略するとデフォルト値の1が適用される。 def m2 p1 = 1, p2 puts p1 + p2 end m2 1 # p1を省略した場合 m2 1, 2 # 明示的に指定した場合 # p1を省略するとデフォルト値の1が適用される。 # p2を省略するとデフォルト値の2が適用される。 def m3 p1 = 1, p2 = 2 puts p1 + p2 end m3 # p1、p2を省略した場合 m3 1 # p1を省略した場合 m3 1, 2 # 明示的に指定した場合 # 引数は、左から設定されるのでp1を省略してp2のみ値を指定することはできない。
可変引数
# 可変長引数は、変数名の前に「*」をつける。 def hoge(*hoge) hoge.each do |val| puts val end end hoge("1", "2", "3")
名前付き引数
名前付き引数というのかわからないけど、引数を指定する際に名前をつけることができる。実際には、Hashで受け渡しを行うのだけれど、RubyのHashは簡易的にインスタンス化できるので、
あたかも引数名に値を設定するかのように実装することができる。
def m(args) puts "p1 : #{args[:p1]}" puts "p2 : #{args[:p2]}" end m p1:"hoge", p2:["fuga1", "fuga2"]