什么时候使用nil,空白,空?

Dav*_*d C 117 ruby ruby-on-rails

是否有关于如何区分任何指引.nil?,.blank?.empty?

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

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

Jul*_*pov 189

在这里,我用所有案例制作了这个有用的表在此输入图像描述

  • 这张桌子很棒 - 感谢分享! (13认同)
  • 这真的非常有用.谢谢! (2认同)
  • 布拉沃,朱莉安:) (2认同)

小智 183

  • 只包含"空白"字符的字符串被视为"空白"?但不是"空"?,例如"\n\t" (4认同)
  • 如果对象的值为false,则Blank也返回true (2认同)

cwn*_*nja 7

  • nil?在所有定义Objects,它只返回truenil单.

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

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

注意,blank?ActiveSupport而不是Rails的1.8.


And*_*are 5

我发现了一个很好的解释在这里:

零?测试对象是否正好是nil,即它是否是唯一想要的NilClass实例.

空?是一些对象响应的方法.您需要检查每个案例的文档.例如,空数组是一个不是nil的数组(它是一个数组吗?)并且没有元素.一个空字符串是一个不是nil的字符串(它是一个字符串对吗?)并且没有字节,没有.

空白?你要求的方法不属于Ruby,它是一个Rails扩展:http: //api.rubyonrails.com/classes/Object.html#M000011.

如果您通过点击链接在那个帖子的最后,你会发现,blank?方法简单地结合nil?empty?方法调用.