如果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这样的哈希方法,但它们实际上并不能满足我的需要。
发布于 2015-12-09 18:23:45
您可以使用短路或操作员||,如下所示:
value = param || 0.00 # where param is something like params[key]如果要忽略空值(如空字符串),可以添加存在方法,如下所示:
value = param.presence || 0.00如果param值可以是Numeric (Float / Integer)、nil或空字符串,则可以将命令缩短如下:
value = param.to_f # will return 0.0 when param is nil or empty string发布于 2015-12-09 18:02:31
你总能做到:
equity = params[:equity].presence || 0.00presence方法是ActiveSupport的一部分,其工作方式如下:
如果它是存在的,则返回接收器,否则返回零。
在赋值中使用的逻辑或(||)运算符分配的第一个值不是falsey。
发布于 2015-12-09 18:15:24
这在Ruby中非常常见:
equity = params[:equity] || 0.00当0.00是nil或false时,它将把params[:equity]分配给nil。
如果您只想在0.00是nil (而不是false)并且使用Rails时才将params[:equity]分配给nil,那么Drenmi提到的presence是一个很好的选择。
https://stackoverflow.com/questions/34185831
复制相似问题