我想更改传递给 Ruby 函数的默认参数。例如,而不是每次都写
[1,2,3].do_stuff(:option => ' my option ')
我想修改默认值以便我可以编写
[1,2,3].do_stuff
更改默认参数的最简单、最干净、最像 Ruby 的方法是什么?
>> [1, 2, 3].do_stuff
=> Result I get
>> [1, 2, 3].do_stuff :an_option => a_value
=> Result I really want, but don't want to specify the argument
我喜欢用super
为了这。除了更改默认参数之外,它还允许我们向方法添加一些功能:
class Array
def do_stuff(options = {})
# Verify if caller has not passed the option
options[:argument_i_want_to_change] = default_value_i_want unless options.has_key? :argument_i_want_to_change
# call super
super
end
end
Result:
>> [1, 2, 3].do_stuff
=> Result that I really want
更新:删除了reverse_merge!依赖性。 (现在正在寻找使用 []= 方法的更好替代方法)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)