我使用下面的代码来检查一个变量是否不为零
if(discount != nil && discount != 0)
...
end
还有更好的办法吗?
我使用下面的代码来检查一个变量是否不为零
if(discount != nil && discount != 0)
...
end
还有更好的办法吗?
当前回答
unless discount.nil? || discount == 0 # ... end
其他回答
def is_nil_and_zero(data)
data.blank? || data == 0
end
如果我们传递""它将返回false,而空白?返回true。 当data = false时也是如此 空白的吗?对于nil、false、空或空白字符串返回true。 所以用空白更好吗?方法以避免空字符串。
你可以把discount初始化为0,只要你的代码保证在初始化之前不尝试使用它。我想这只会删除一张支票,我想不出还有什么。
if (discount||0) != 0
#...
end
你可以利用NilClass提供的#to_i方法,它将为nil值返回零:
unless discount.to_i.zero?
# Code here
end
如果折扣可以是小数,则可以使用#to_f来代替,以防止数字四舍五入为零。
好的,5年过去了....
if discount.try :nonzero?
...
end
需要注意的是,try是在ActiveSupport宝石中定义的,所以在普通ruby中不可用。