2010-05-12 14 views
9

Aquí es parte de mi clase Note:¿Se puede definir <=> en Ruby y luego tener ==,>, <, > = y <= definidos automáticamente?

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 

Me parece que debe haber un módulo que podría incluir que me podría dar a mis igualdad y de comparación de los operadores sobre la base de mi método <=>. ¿Hay alguno?

Supongo que mucha gente se encontrará con este tipo de problema. ¿Cómo lo usualmente lo resuelves? (¿Cómo lo haces SECO?)

Respuesta

13

Sí solo include Comparable - el único requisito es tener definida la nave espacial <=> método.

+0

ah genial! Sabía que habría algo, pero era un poco difícil de buscar. : P Gracias! –

Cuestiones relacionadas