【问题标题】:When to use nil, blank, empty? [duplicate]何时使用 nil、blank、empty? [复制]
【发布时间】:2010-12-11 21:58:24
【问题描述】:

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

我通常对何时在我的应用程序中使用它们感到困惑,因为它们似乎都意味着相同的东西,但具有不同的含义。

有人有关于血腥细节的备忘单吗?

【问题讨论】:

    标签: ruby-on-rails ruby


    【解决方案1】:

    在这里,我制作了一张包含所有案例的有用表格

    【讨论】:

    • 这张桌子很棒-谢谢分享!
    • 这真的非常有用。谢谢!
    • nil.blank? 返回undefined method 错误。我使用object.to_s.empty?。当对象为nilempty 字符串时,它返回true
    • @SharvyAhmed object.to_s.empty? 在普通 ruby​​ 中使用时有一个缺点 - 如果未定义对象变量,则会引发 NameError 异常。
    【解决方案2】:

    【讨论】:

    • 仅包含“空白”字符的字符串被视为blank?,而不是empty?,例如" \n \t"
    • 如果对象的值为 false,Blank 也会返回 true
    • 我认为nil 的描述不准确,因为nil.nil? 是正确的,但nilNilClass 的对象。
    • 如果您 (a) 不使用 Rails 但 (b) 使用 ActiveSupport,至少在某个版本之上(不确定是哪个版本)......并且您只需要包含 blank?,这里是如何挑选这一点:require 'active_support/core_ext/object/blank (source)
    【解决方案3】:
    • nil? 定义在所有 Objects 上,它只在 nil 单例上返回 true

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

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

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

    【讨论】:

      【解决方案4】:

      我找到了一个很好的解释here

      没有?测试对象是否是 完全为零,那就是它是否是 一个并且只想要一个实例 无类。

      空的?是一些对象的方法 回应。你需要检查 每个案例的文档。为了 例如,空数组是一个 不是 nil (它是一个数组对吗?)并且 没有元素。一个空字符串是 一个不为零的(它是一个字符串 对吧?)并且没有字节,什么都没有。

      空白?您要求的方法不 属于Ruby,是Rails 延期: http://api.rubyonrails.com/classes/Object.html#M000011.

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

      【讨论】:

      • String containing only "blank" characters is regarded as blank? but not empty?, e.g. " \n \t",正如@xhh 在此问题的另一个答案中所写。
      猜你喜欢
      • 2012-06-17
      • 2017-01-18
      • 1970-01-01
      • 2021-12-15
      • 1970-01-01
      • 1970-01-01
      • 2021-12-12
      • 2015-09-16
      • 2012-11-10
      相关资源
      最近更新 更多