2012-05-10 85 views

回答

1

我通常会创建一个哈希这样的:

opts = {:value1 => 1, 
     :value3 => 3} 
opts[:value2] = 2 if foo 
my_method(opts) 

这种方法的好处是,每个人都抓住了if foo,因为它是一个特例。否则,像我这样的许多程序员会乍一看错过这个,并且为什么:value2没有设置。

有时你不得不默认设置,那么你可以使用这个方法:

default = {:value1 => 0, 
      :value2 => 0, 
      :value3 => 0} 
opts = {:value1 => 1, 
     :value3 => 3} 
my_method(default.merge(opts)) 

甚至更​​好:

DEFAULT_OPTS = {:value1 => 0, 
       :value2 => 0, 
       :value3 => 0} 

def my_method(opts) 
    opts = DEFAULT_OPTS.merge(opts) 
    # ... 
end 

my_method(...) 
0

检查这blog post哪些应该涵盖您的所有需求。

+0

谢谢您的回答。它不是关于如何构建该方法,更多的是使用可选参数进行调用。我在一个循环中调用该方法,有时'value2'可用,有时不可用。我延长了我的问题。 – tonymarschall

相关问题