代码之家  ›  专栏  ›  技术社区  ›  Paige Ruten

你能在Ruby中定义<=>然后自动定义=、>、<、>=和<=吗?

  •  9
  • Paige Ruten  · 技术社区  · 14 年前

    这是我的一部分 Note 班级:

    class Note
      attr_accessor :semitones, :letter, :accidental
    
      def initialize(semitones, letter, accidental = :n)
        @semitones, @letter, @accidental = semitones, letter, accidental
      end
    
      def <=>(other)
        @semitones <=> other.semitones
      end
    
      def ==(other)
        @semitones == other.semitones
      end
    
      def >(other)
        @semitones > other.semitones
      end
    
      def <(other)
        @semitones < other.semitones
      end
    end
    

    在我看来,应该有一个模块,我可以包括,可以给我的平等和比较运算符基于我的 <=> 方法。有吗?

    我猜很多人会遇到这种问题。你通常如何解决它?(你是怎么让它变干的?)

    1 回复  |  直到 14 年前
        1
  •  13
  •   Jakub Hampl    14 年前

    是啊 include Comparable -唯一的要求是拥有宇宙飞船 <=> 方法定义。