首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >参数或默认值赋值的惯用方法

参数或默认值赋值的惯用方法
EN

Stack Overflow用户
提问于 2015-12-09 18:01:16
回答 4查看 330关注 0票数 1

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

代码语言:javascript
运行
复制
if !params[:equity].nil?
   equity = params[:equity]
else
   equity = 0.00
end

难道没有办法这样做吗?

代码语言:javascript
运行
复制
equity = params[:equity].nil? ? 0.00 : params[:equity]

我尝试过像replaceselectmerge这样的哈希方法,但它们实际上并不能满足我的需要。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2015-12-09 18:23:45

您可以使用短路或操作员||,如下所示:

代码语言:javascript
运行
复制
value = param || 0.00 # where param is something like params[key]

如果要忽略空值(如空字符串),可以添加存在方法,如下所示:

代码语言:javascript
运行
复制
value = param.presence || 0.00

如果param值可以是Numeric (Float / Integer)、nil或空字符串,则可以将命令缩短如下:

代码语言:javascript
运行
复制
value = param.to_f # will return 0.0 when param is nil or empty string
票数 2
EN

Stack Overflow用户

发布于 2015-12-09 18:02:31

你总能做到:

代码语言:javascript
运行
复制
equity = params[:equity].presence || 0.00

presence方法是ActiveSupport的一部分,其工作方式如下:

如果它是存在的,则返回接收器,否则返回零。

在赋值中使用的逻辑或(||)运算符分配的第一个值不是falsey。

票数 4
EN

Stack Overflow用户

发布于 2015-12-09 18:15:24

这在Ruby中非常常见:

代码语言:javascript
运行
复制
equity = params[:equity] || 0.00

0.00nilfalse时,它将把params[:equity]分配给nil

如果您只想在0.00nil (而不是false)并且使用Rails时才将params[:equity]分配给nil,那么Drenmi提到的presence是一个很好的选择。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34185831

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档