2012-05-10 129 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

相關問題