Search code examples
rubyoverridingequality

Overriding the == operator in Ruby


According to the docs, Array.include? uses the == comparison on objects. I come from Java where such things are (usually) done with .equals() which is easy to override for a particular object.

How can I override == in Ruby to allow me to specify the behaviour of Array.include? for my particular object?


Solution

  • In Ruby == is just a method (with some syntax sugar on top allowing you to write foo == bar instead of foo.==(bar)) and you override == just like you would any other method:

    class MyClass
      def ==(other_object)
        # return true if self is equal to other_object, false otherwise
      end
    end