Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 指定参数或默认值的惯用方法_Ruby - Fatal编程技术网

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的有趣的副作用。