0
我有一個方法,我想通過動態參數。該方法在循環中調用,有時value2
可用,有時不可用。處理可選方法參數的常用方法是什麼?
處理可選方法參數的常用方法是什麼?
my_method(:value1 => 1,
:value2 => 2 if foo, # this is not working
:value3 => 3)
我有一個方法,我想通過動態參數。該方法在循環中調用,有時value2
可用,有時不可用。處理可選方法參數的常用方法是什麼?
處理可選方法參數的常用方法是什麼?
my_method(:value1 => 1,
:value2 => 2 if foo, # this is not working
:value3 => 3)
我通常會創建一個哈希這樣的:
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(...)
檢查這blog post哪些應該涵蓋您的所有需求。
謝謝您的回答。它不是關於如何構建該方法,更多的是使用可選參數進行調用。我在一個循環中調用該方法,有時'value2'可用,有時不可用。我延長了我的問題。 – tonymarschall