如果我问自己object.not_nil?
vs !object.nil?
,我想我会更好地看到我的代码。所以我的问题是:真的没有方便的方法!nil?加糖的东西?它是在我眼前,我看不到它,还是我错过了一个重要的观点?
答案 0 :(得分:6)
这个怎么样?
not object.nil?
但更容易做的就是通过测试变量本身来检查“真实性”。由于nil
隐式false
,您只需检查object
。
答案 1 :(得分:4)
你可以在上层引入糖。而不是:
if not object.nil?
你可以写:
unless object.nil?
答案 2 :(得分:3)
这个怎么样?
if object
# sth
end
如果object
为false,则不会执行此操作,但根据您的代码,可能会更好。
使用ruby-on-rails-3
标记问题的另一种解决方案(也不一样):使用present?
不会执行[]
或{{{ 1}}与{}
不同。
根据具体情况再次使用另一个:使用!object.nil?
,如果您的条件更复杂(使用unless
和/或&&
),则不会非常好。
如果您的情况属于以下形式:
||
您可以使用 if !object.nil? && object.something?
# sth
end
,因为您正在使用Rails,如下所示:
try
在所有其他情况下,我认为if object.try(:something?)
# sth
end
或!object.nil?
仍然是最佳解决方案。
答案 3 :(得分:2)
围绕#nil方便的时候?讨论了,Activesupport的方法#blank?和#present?也不应该忘记。
答案 4 :(得分:2)
不是您一定想要的,但您可以自己介绍not_nil?
:
class Object
def not_nil?
!self.nil?
end
end
然后你可以做以下事情:
nil.not_nil?
==> false
3.not_nil?
==> true
a = []
a.not_nil?
==> true