用于分配参数或默认值的惯用法

时间:2015-12-09 18:01:16

标签: ruby

如果params[:value]为零,则必须有更好的方法来分配默认值。现在我这样做:

if !params[:equity].nil?
   equity = params[:equity]
else
   equity = 0.00
end

没有办法做这样的事情:

equity = params[:equity].nil? ? 0.00 : params[:equity]

我尝试过像replaceselectmerge这样的哈希方法,但它们并没有真正起作用。

4 个答案:

答案 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.00equityparams[:equity]时,它会将nil分配给false

如果您只想在0.00equityparams[:equity])时将nil分配给false,并且您正在使用Rails,{{ Drenmi提到的1}}是一个很好的选择。

答案 3 :(得分:1)

您可以将默认值传递给Hash#fetch

equity = params.fetch(:equity, 0.0) #=> 0.0