2010-05-12 9 views
9

यहाँ मेरी 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 

ऐसा लगता है कि वहाँ एक मॉड्यूल है कि मैं शामिल हो सकते हैं कि मुझे मेरी समानता और तुलना ऑपरेटरों मेरी <=> पद्धति पर आधारित दे सकता है किया जाना चाहिए मुझे लगता है। क्या कोई है?

मुझे लगता है कि बहुत से लोग इस तरह की समस्या में भाग ले रहे हैं। आप इसे आमतौर पर कैसे हल करते हैं? (कैसे कर आप यह सूखी बनाने के?)

उत्तर

13

हाँ बस include Comparable - केवल आवश्यकता अंतरिक्ष यान <=> विधि परिभाषित है।

+0

आह महान! मुझे पता था कि कुछ ऐसा होगा, लेकिन खोजना मुश्किल था। : पी धन्यवाद! –

संबंधित मुद्दे