http://brainspec.com/blog/2012/10/08/keyword-arguments-ruby-2-0/
以前
def foo(options = {})
options = {bar: 'bar'}.merge(options)
puts "#{options[:bar]} #{options[:buz]}"
end
foo(buz: 'buz') # => 'bar buz'
Ruby 2.0
def foo(str: "foo", num: 424242)
[str, num]
end
foo(str: 'buz', num: 9) #=> ['buz', 9]
foo(str: 'bar') # => ['bar', 424242]
foo # => ['foo', 424242]
foo(bar: 'buz') # => ArgumentError
乍一看,从以前的版本变为现在的版本,让人有点不知所措。 但是如果不看老版本的话,新的写法非常的人性化呀!喜欢这样的人性化设计,在方法内处理传入的参数更加顺手了。
keyword argument is a very normal feature. Ruby should use it more earlier.