zoukankan      html  css  js  c++  java
  • 【转】ruby中nil?, empty? and blank?的选择

    In Ruby, you check with nil? if an object is nil:
    article = nil article.nil? # => true

    empty? checks if an element - like a string or an array f.e. - is empty:

    # Array
    [].empty?   #=> true
    # String
    "".empty?   #=> true
    

    Rails adds the method blank? to the Object class:

    An object is blank if it‘s false, empty, or a whitespace string. For example, "", " ", nil, [], and {} are blank.

    This simplifies

    if !address.nil? && !address.empty?
    

    to

    if !address.blank?



    .nil?

    - It is Ruby method
    - It can be used on any object and is true if the object is nil.
    - "Only the object nil responds true to nil?" - RailsAPI

    nil.nil? = true
    anthing_else.nil? = false
    a = nil
    a.nil? = true
    “”.nil = false

    .empty?

    - It is Ruby method
    - can be used on strings, arrays and hashes and returns true if:
    • String length == 0
    • Array length == 0
    • Hash length == 0
    
    - Running .empty? on something that is nil will throw a NoMethodError

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


    .blank?

    - It is Rails method
    - operate on any object as well as work like .empty? on strings, arrays and hashes.

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

    - It also evaluates true on strings which are non-empty but contain only whitespace:

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

    Quick tip: !obj.blank? == obj.present?

    activesupport/lib/active_support/core_ext/object/blank.rb, line 17 # (Ruby 1.9)

    def present?
     !blank?
    end
  • 相关阅读:
    造数据
    自定义注解
    利用线程池,同步线程实现并发
    ThreadPoolExecutor 线程池
    velocity 模板
    [python] 解析xml文件
    url 中需要转义的字符
    Appium 坑
    TestNG 101
    【python】print · sys.stdout · sys.stderr
  • 原文地址:https://www.cnblogs.com/zs-note/p/3987605.html
Copyright © 2011-2022 走看看