Ruby on Rails中nil v。empty v。blank的简要解释

我发现自己一直在寻找一个清晰的nil?差异定义nil?blank? ,并且是empty? 在Ruby on Rails中。 这是我最近来的:

  • blank? 对象是假的,空的或空白字符串。 例如, """ "nil[]{}为空。

  • nil? 对象是NilClass的实例。

  • empty? 对象是特定于类的,并且定义因类而异。 如果没有字符,则字符串为空;如果数组不包含任何项目,则该数组为空。

  • 有什么缺失或可以进行更紧密的比较?


    .nil? 可用于任何对象,如果对象为零,则为true。

    .empty? 可用于字符串,数组和散列,并在以下情况下返回true:

  • 字符串长度== 0
  • 数组长度== 0
  • 哈希长度== 0
  • 运行.empty? 在零的东西上会抛出一个NoMethodError

    那是.blank? 它是通过Rails实现的,并且可以在任何对象上运行,并且像.empty?一样工作.empty? 在字符串,数组和哈希上。

    nil.blank? == true
    false.blank? == true
    [].blank? == true
    {}.blank? == true
    "".blank? == true
    5.blank? == false
    0.blank? == false
    

    .blank? 也对非空的但只包含空格的字符串进行评估:

    "  ".blank? == true
    "  ".empty? == false
    

    Rails还提供了.present? ,它返回.blank?的否定.blank?

    数组陷阱: blank? 即使数组的所有元素都为空,也会返回false 。 要确定这种情况下的空白,请使用all? blank? , 例如:

    [ nil, '' ].blank? == false
    [ nil, '' ].all? &:blank? == true 
    

    我用所有情况制作了这个有用的表格:

    在这里输入图像描述


    只要扩展朱利安的桌子:

    在这里输入图像描述

    Ref:empty?blank?nil?傻傻分不清楚

    链接地址: http://www.djcxy.com/p/4383.html

    上一篇: A concise explanation of nil v. empty v. blank in Ruby on Rails

    下一篇: Get the value of an instance variable given its name