Можете ли вы определить <=> в Ruby, а затем автоматически определите ==,>, <,>= и <=?

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

Решение

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

Другие вопросы по тегам