我重新审视了红宝石,我看到了类似
的东西 # THINK ABOUT IT:¬
30 #¬
31 # Is it better to use¬
32 # obj.nil?¬
33 # or¬
34 # obj == nil¬
35 # Why?
真的更好吗?
我站在obj.nil的一边,因为它更容易阅读和更短。但是,有更好的证据表明哪个更好?
答案 0 :(得分:3)
obj.nil?
更具可读性和效率
require 'benchmark'
n = 500000
Benchmark.bm do |x|
x.report { n.times do ; 1.nil?; end }
x.report { n.times do ; 1 == nil; end }
end
# user system total real
# 0.050000 0.000000 0.050000 ( 0.056285)
# 0.100000 0.000000 0.100000 ( 0.094164)
答案 1 :(得分:1)
obj.nil?
也更容易修改。您可以覆盖它而不会使用更通用的==
方法。 A可以使用Null Object Pattern,用户也可以使用nil?
直接测试nil。