Override == operator in Ruby

后端 未结 2 470
不思量自难忘°
不思量自难忘° 2020-12-15 03:10

According to the docs, Array.include? uses the == comparison on objects. I come from Java where such things are (usually) done with

相关标签:
2条回答
  • 2020-12-15 03:27

    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
    
    0 讨论(0)
  • 2020-12-15 03:28

    As described above, == is a method is Ruby and can be overrided. You will just write down the equality condition.

    class Person
      attr_reader :name, :gender, :social_id
      attr_accessor :age
    
      def initialize(name, age, gender, social_id)
        self.name = name
        self.age = age.to_i
        self.gender = gender
        self.social_id = social_id
    
      def ==(other)
        social_id == other.social_id
    

    You don't need to override other methods any more

    0 讨论(0)
提交回复
热议问题