是否有更简洁和惯用的方法来编写以下代码,该代码用于为方法指定可选参数(在 params/options 哈希中)的默认值?
def initialize(params={})
if params.has_key? :verbose
@verbose = params[:verbose]
else
@verbose = true # this is the default value
end
end
我很想把它简化成这样:
def initialize(params={})
@verbose = params[:verbose] or true
end
这几乎可以工作,除了你真的需要使用has_key? :verbose
作为条件,而不是仅仅评估params[:verbose]
,以涵盖当你想要指定'false'值的情况(即,如果你想:verbose => false
在这个例子中作为参数传递) .
我意识到在这个简单的例子中我可以很容易地做到:
def initialize(verbose=false)
@verbose = verbose
end
但是,在我的真实代码中,我实际上有一堆可选参数(除了一些必需的参数之外),我想将可选参数放在 params 哈希中,以便我可以轻松地仅指定(按名称)少数几个我想要的,而不是必须按顺序列出它们(并且可能不得不列出我实际上不想要的那些)。