假设我想要一个像这样调用的方法:
tiger = create_tiger( :num_stripes => 12,:max_speed => 43.2 ) tiger.num_stripes # will be 12
其中一些选项具有默认值:
tiger = create_tiger( :max_speed => 43.2 ) tiger.num_stripes # will have some default value
解决方法
如果您使用的是Rails(不仅仅是普通的Ruby),那么稍微短一些的方法就是
def foo(options = {}) options.reverse_merge! { ... defaults ... } end
这样做的另一个好处是可以让你更干净地做多行:
def foo(options = {}) options.reverse_merge!( :some_default => true,:other_default => 5 ) end