关于ruby on rails:什么时候使用nil,空白,空?

When to use nil, blank, empty?

本问题已经有最佳答案,请猛点这里访问。

是否有关于如何区分.nil?.blank?.empty?的指南?

我一般总是很困惑何时在我的应用程序中使用它们,因为它们似乎都意味着相同但具有不同的含义。

有没有人在血淋淋的细节上有任何备忘单?


在这里,我使用所有情况enter image description here创建了这个有用的表


  • nil? - 检查变量是否引用对象

  • empty? - 可用于检查各种对象类型,如空字符串"或空数组[]

  • blank? - 检查nil?empty?


  • nil?在所有Objects上定义,它只返回nil单例上的true

  • blank?也在所有对象上定义,如果对象也响应empty?并且为空,则返回true,或者是false类型值(!object始终true)。

  • empty?在几个集合对象上定义,如果没有元素,则为true。它也在String上定义。

请注意blank?ActiveSupport而不是在Rails 1.8中。


我在这里找到了一个很好的解释

nil? tests whether the object is
exactly nil, that is whether it is the
one and only want instance of
NilClass.

empty? is a method some objects
respond to. You need to check the
documentation for each case. For
example, and empty array is one that
is not nil (it is an array right?) and
has no elements. An empty string is
one that is not nil (it is a string
right?) and has no bytes, nothing.

The blank? method you ask for does not
belong to Ruby, it is a Rails
extension:
http://api.rubyonrails.com/classes/Object.html#M000011.

如果单击该帖子末尾的链接,您会发现blank?方法只是组合了nil?empty?方法调用。