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

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

还有更好的办法吗?


当前回答

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

其他回答

您可以将空行转换为整数值并检查零?。

"".to_i.zero? => true
nil.to_i.zero? => true
if (discount||0) != 0
  #...
end

从Ruby 2.3.0开始,您可以将安全导航操作符(&.)与数字#非零?结合使用。&。如果实例为nil且非零,则返回nil ?—如果数字为0:

if discount&.nonzero?
  # ...
end

或后缀:

do_something if discount&.nonzero?

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

val.to_i.zero?

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

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

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