Ruby 指定参数或默认值的惯用方法
如果Ruby 指定参数或默认值的惯用方法,ruby,Ruby,如果params[:value]为nil,则必须有更好的方法来指定默认值。现在我要做的是: if !params[:equity].nil? equity = params[:equity] else equity = 0.00 end 难道没有一种方法可以做到这一点: equity = params[:equity].nil? ? 0.00 : params[:equity] 我尝试了诸如replace、select或merge之类的散列方法,但它们并不能真正按照我的需要工作。
params[:value]
为nil,则必须有更好的方法来指定默认值。现在我要做的是:
if !params[:equity].nil?
equity = params[:equity]
else
equity = 0.00
end
难道没有一种方法可以做到这一点:
equity = params[:equity].nil? ? 0.00 : params[:equity]
我尝试了诸如replace
、select
或merge
之类的散列方法,但它们并不能真正按照我的需要工作。您可以随时执行以下操作:
equity = params[:equity].presence || 0.00
该方法是ActiveSupport的一部分,其工作原理如下:
equity = params[:equity].nil? ? 0.00 : params[:equity]
返回接收器(如果存在),否则返回nil
逻辑or(|
)运算符在赋值中使用时,会指定第一个不为假的值。您始终可以执行以下操作:
equity = params[:equity].presence || 0.00
该方法是ActiveSupport的一部分,其工作原理如下:
equity = params[:equity].nil? ? 0.00 : params[:equity]
返回接收器(如果存在),否则返回nil
逻辑or(
|
)运算符在赋值中使用时,会指定第一个非假值。这在Ruby中非常常见:
equity = params[:equity] || 0.00
当params[:equity]
为nil
或false
时,它将0.00
分配给equity
如果仅当
params[:equity]
为nil
(而非false
)时,才想将0.00
分配给equity
,并且您正在使用Rails,那么Drenmi提到的presence
是一个很好的选择。这在Ruby中非常常见:
equity = params[:equity] || 0.00
当params[:equity]
为nil
或false
时,它将0.00
分配给equity
如果仅当
params[:equity]
为nil
(非false
)时,才想将0.00
分配给equity
,并且您正在使用Rails,那么德伦米提到的presence
是一个很好的选择。您可以像这样使用短路或操作符|
:
value = param || 0.00 # where param is something like params[key]
如果要忽略空白值(如空字符串),可以添加presence方法,如下所示:
value = param.presence || 0.00
如果param值可以是数字(Float/Integer)、nil或空字符串,则可以按如下方式缩短命令:
value = param.to_f # will return 0.0 when param is nil or empty string
您可以使用短路或运算符
|
,如下所示:
value = param || 0.00 # where param is something like params[key]
如果要忽略空白值(如空字符串),可以添加presence方法,如下所示:
value = param.presence || 0.00
如果param值可以是数字(Float/Integer)、nil或空字符串,则可以按如下方式缩短命令:
value = param.to_f # will return 0.0 when param is nil or empty string
您可以将默认值传递给:
您可以将默认值传递给:
很高兴了解
状态
,+1。我习惯于使用出席?
也感谢您对作业的解释。很高兴了解出席
,+1。我习惯于使用present?
也谢谢你对作业的解释。只是一个旁注-if
与相同,除非
只是旁注-如果
与相同,除非
谢谢。我不敢相信我以前没有尝试过这个,我一定有| |=而且我到处都是乱七八糟的代码:\to|f的副作用也很有趣。谢谢。我不敢相信我以前没有尝试过这个,我一定有| |=而且我到处都是乱七八糟的代码:\to|f的有趣的副作用。