美文网首页
==、===、eql?以及equal?的区别

==、===、eql?以及equal?的区别

作者: kamionayuki | 来源:发表于2015-12-10 08:55 被阅读87次
    • ==判断双方的值(value)是否相等
    1 == 1.0 # true
    
    • ===通常情况与==相等,但在一些其它的情况下,也可以判断相等,比如:
      在Range中===用于判断等号右边的对象是否包含于等号左边的Range;
      正则表达式中用于判断一个字符串是否匹配模式,
      Class定义===来判断一个对象是否为类的实例。
    (1..10) === 5 # true: 5属于range 1..10
    /\d+/ === "123" # true: 字符串匹配这个模式
    String === "s" # true: "s" 是一个字符串类的实例
    
    • eql?判断同时双方的值(value)和类型(type)是否相等
    1.eql?(1.0) # false
    
    • equal?判断对象的identity是否相等,可以认为是否为同一个对象
       s1 = "d"
       s2 = "d"    
       s1.eql? s2 #true
       s1.equal? s2 #false    
       s1.object_id #19839780
       s2.object_id # 19839768
       
       s3 = "d"
       s4 = s3    
       s3.eql? s4 #true
       s3.equal? s4 #true    
       s3.object_id # 19839576
       s4.object_id # 19839576
    

    相关文章

      网友评论

          本文标题:==、===、eql?以及equal?的区别

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