没有方便的方法!nil?

时间:2012-09-27 12:57:14

标签: ruby ruby-on-rails-3

如果我问自己object.not_nil? vs !object.nil?,我想我会更好地看到我的代码。所以我的问题是:真的没有方便的方法!nil?加糖的东西?它是在我眼前,我看不到它,还是我错过了一个重要的观点?

5 个答案:

答案 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