我使用下面的代码来检查一个变量是否不为零

if(discount != nil && discount != 0) 
  ...
end

还有更好的办法吗?


当前回答

if (discount||0) != 0
  #...
end

其他回答

unless [nil, 0].include?(discount) 
  # ...
end

我更喜欢使用更简洁的方法:

val.to_i.zero?

如果val为nil, val.to_i将返回0,

在此之后,我们所需要做的就是检查最终值是否为零。

在处理数据库记录时,我喜欢使用迁移帮助器将所有空值初始化为0:

add_column :products, :price, :integer, default: 0

好的,5年过去了....

if discount.try :nonzero?
  ...
end

需要注意的是,try是在ActiveSupport宝石中定义的,所以在普通ruby中不可用。

unless discount.nil? || discount == 0
  # ...
end