我使用下面的代码来检查一个变量是否不为零
if(discount != nil && discount != 0)
...
end
还有更好的办法吗?
我使用下面的代码来检查一个变量是否不为零
if(discount != nil && discount != 0)
...
end
还有更好的办法吗?
当前回答
unless discount.nil? || discount == 0 # ... end
其他回答
我更喜欢使用更简洁的方法:
val.to_i.zero?
如果val为nil, val.to_i将返回0,
在此之后,我们所需要做的就是检查最终值是否为零。
在处理数据库记录时,我喜欢使用迁移帮助器将所有空值初始化为0:
add_column :products, :price, :integer, default: 0
我相信下面的代码对于ruby代码来说已经足够好了。我不认为我可以写一个单元测试来显示这个和原来的有什么不同。
if discount != 0
end
从Ruby 2.3.0开始,您可以将安全导航操作符(&.)与数字#非零?结合使用。&。如果实例为nil且非零,则返回nil ?—如果数字为0:
if discount&.nonzero?
# ...
end
或后缀:
do_something if discount&.nonzero?
if discount.nil? || discount == 0
[do something]
end