如果params[:value]
为零,则必须有更好的方法来分配默认值。现在我这样做:
if !params[:equity].nil?
equity = params[:equity]
else
equity = 0.00
end
没有办法做这样的事情:
equity = params[:equity].nil? ? 0.00 : params[:equity]
我尝试过像replace
,select
或merge
这样的哈希方法,但它们并没有真正起作用。
答案 0 :(得分:4)
你总是可以这样做:
equity = params[:equity].presence || 0.00
presence
方法是ActiveSupport的一部分,其工作方式如下:
如果接收者存在则返回接收者,否则返回nil。
逻辑或(||
)运算符在赋值时使用时,会分配第一个非假的值。
答案 1 :(得分:2)
您可以像这样使用短路OR运算符subdomain
:
||
如果要忽略空白值(如空字符串),可以添加在线方法,如下所示:
value = param || 0.00 # where param is something like params[key]
如果param值可以是Numeric(Float / Integer),nil或空字符串,则可以像这样缩短命令:
value = param.presence || 0.00
答案 2 :(得分:1)
这在Ruby中很常见:
equity = params[:equity] || 0.00
当0.00
为equity
或params[:equity]
时,它会将nil
分配给false
。
如果您只想在0.00
为equity
(params[:equity]
)时将nil
分配给false
,并且您正在使用Rails,{{ Drenmi提到的1}}是一个很好的选择。
答案 3 :(得分:1)
您可以将默认值传递给Hash#fetch
:
equity = params.fetch(:equity, 0.0) #=> 0.0