我使用下面的代码来检查一个变量是否不为零
if(discount != nil && discount != 0)
...
end
还有更好的办法吗?
我使用下面的代码来检查一个变量是否不为零
if(discount != nil && discount != 0)
...
end
还有更好的办法吗?
当前回答
unless [nil, 0].include?(discount) # ... end
其他回答
if discount and discount != 0
..
end
更新,它将为false折扣= false
好的,5年过去了....
if discount.try :nonzero?
...
end
需要注意的是,try是在ActiveSupport宝石中定义的,所以在普通ruby中不可用。
从Ruby 2.3.0开始,您可以将安全导航操作符(&.)与数字#非零?结合使用。&。如果实例为nil且非零,则返回nil ?—如果数字为0:
if discount&.nonzero?
# ...
end
或后缀:
do_something if discount&.nonzero?
在处理数据库记录时,我喜欢使用迁移帮助器将所有空值初始化为0:
add_column :products, :price, :integer, default: 0
是的,我们有一条干净的红宝石路。
discount.to_f.zero?
这个检查处理了大量的情况,即折扣可能是nil,折扣可能是int 0,折扣可能是浮动0.0,折扣可能是字符串“0.0”,“0”。