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