Можете ли вы определить <=> в Ruby, а затем автоматически определить ==,>, <,> = и <=? - PullRequest
9 голосов
/ 12 мая 2010

Вот часть моего 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 Ответ

13 голосов
/ 12 мая 2010

Да просто include Comparable - единственное требование - определить метод космического корабля <=>.

...