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