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

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

还有更好的办法吗?


当前回答

if discount and discount != 0
  ..
end

更新,它将为false折扣= false

其他回答

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

add_column :products, :price, :integer, default: 0
if discount.nil? || discount == 0
  [do something]
end
unless [nil, 0].include?(discount) 
  # ...
end
if discount and discount != 0
  ..
end

更新,它将为false折扣= false

你可以这样做:

if (!discount.nil? && !discount.zero?)

这里的顺序很重要,因为如果discount是nil,那么它就不会是0 ?方法。Ruby的短路评估应该阻止它尝试评估折扣。零?,但如果折扣为nil。