我使用下面的代码来检查一个变量是否不为零
if(discount != nil && discount != 0)
...
end
还有更好的办法吗?
我使用下面的代码来检查一个变量是否不为零
if(discount != nil && discount != 0)
...
end
还有更好的办法吗?
当前回答
if discount.nil? || discount == 0
[do something]
end
其他回答
if (discount||0) != 0
#...
end
我相信下面的代码对于ruby代码来说已经足够好了。我不认为我可以写一个单元测试来显示这个和原来的有什么不同。
if discount != 0
end
你可以这样做:
if (!discount.nil? && !discount.zero?)
这里的顺序很重要,因为如果discount是nil,那么它就不会是0 ?方法。Ruby的短路评估应该阻止它尝试评估折扣。零?,但如果折扣为nil。
def is_nil_and_zero(data)
data.blank? || data == 0
end
如果我们传递""它将返回false,而空白?返回true。 当data = false时也是如此 空白的吗?对于nil、false、空或空白字符串返回true。 所以用空白更好吗?方法以避免空字符串。
是的,我们有一条干净的红宝石路。
discount.to_f.zero?
这个检查处理了大量的情况,即折扣可能是nil,折扣可能是int 0,折扣可能是浮动0.0,折扣可能是字符串“0.0”,“0”。