Можно ли определить <=> в 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

Это кажется мне, любят должен быть модуль, который я мог включать, который мог дать мне мои операторы равенства и операторы сравнения на основе моего <=> метод. Есть ли один?

Я предполагаю, что много людей сталкивается с этим видом проблемы. Как Вы обычно решаете его? (Как Вы делаете это DRY?)

9
задан Marc-André Lafortune 12 May 2010 в 15:35
поделиться

1 ответ

Да, просто включите Comparable - единственное требование - чтобы был определен метод spaceship <=>.

13
ответ дан 4 December 2019 в 15:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: