美文网首页我-程序成长-解惑
Ruby中的 == 、equal?和eql?

Ruby中的 == 、equal?和eql?

作者: 就叫初九吧 | 来源:发表于2016-02-04 10:14 被阅读113次

    ==和equal?是在BasicObject定义的
    eql?是在Object中定义的
    默认情况下这个三个方法都是在对象水平进行比较,即当比较的两个对象具有相同的内存时返回true。
    按照ruby文档 equal?是不应该被override的。
    像Fixnum String等类对== eql?进行了overrride,所以才会有如下情况:

    1 == 1.0 # => true
    1.eql? 1.0 # => false
    1.equal? 1.0 #=> false


    "foo" == "foo" #=>true
    "foo".eql? "foo" #=>true
    "foo" .equal? "foo" #=>false


    class Name; end
    n1 = Name.new
    n2 = Name.new
    n1 == n2 #=> false
    n1.eql? n2 #=> false
    n1.equal? n2 #=>false

    相关文章

      网友评论

        本文标题:Ruby中的 == 、equal?和eql?

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