以下のようにメソッド引数のデフォルト値を設定すれば、 呼び出す時に省略することができます。
1 def foo(a = nil) 2 a 3 end 4 5 foo #=> nil 6 foo("test") => "test"
では、引数が省略されたかどうか判別するにはどうすればいいでしょうか。 以下のようにすれば判別が可能です。
1 def foo(a = (a_default = true) && nil) 2 [a,a_default] 3 end 4 5 foo #=> [nil, true] 6 foo("test") #=> ["test", nil]
Rubyの引数のデフォルト値は、式を記述でき、省略された場合だけ評価されるのでそれを利用できます。
posted by
genki
on Tue 9 Aug 2011
at 04:54