Можете ли вы определить <=> в 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
- единственное требование - иметь космический корабль <=>
метод определен.