美文网首页ruby on rails
Ruby中的nil?,empty?与Rails中的blank?,

Ruby中的nil?,empty?与Rails中的blank?,

作者: 李小西033 | 来源:发表于2017-06-22 15:29 被阅读120次

    A concise explanation of nil v. empty v. blank in Ruby on Rails

    .nil?可以用在一切对象上,当对象为nil时,返回true
    .empty?可以用于字符串,数组或者哈希,当满足下列条件时,返回true

    • String length == 0
    • Array length == 0
    • Hash length == 0

    在nil对象上调用 .empty?会抛出NoMethodError异常。
    .blank?就是为此而生的。这个方法是Rails实现的,类似于.empty?可以作用于字符串,数组或者哈希,.blank?可以作用于认为对象。

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

    对于只包含空格的字符串,.blank?的返回同样为true

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

    Rails同样提供了.present? 方法,其返回值与.blank?相反。

    注意,就算数组中的元素都为blank时,对数组调用.blank?仍然会返回false。对于这种情况时,使用.all?配合.blank?,如下例:

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

    相关文章

      网友评论

        本文标题:Ruby中的nil?,empty?与Rails中的blank?,

        本文链接:https://www.haomeiwen.com/subject/zyjfcxtx.html