From: Victor Shepelev Date: 2006-04-14T04:50:02+09:00 Subject: Rubyesque way to do multiple <=> Hello All. I have class with some fields class Human attr_accessor :sex, :age, :second_name, :first_name end now I want to sort objects of this class. I've defined operator <=> class Human def <=>(other) [sex, age, second_name, first_name] <=> [sex, age, second_name, first_name] end end Looks good, yeah? But! If I use third-party complex comparator for some of the fields, I receive something like: def <=> (other) res = ComplexCustomComparator.compare(sex, other.sex) return res if res != 0 #if they have the same sex, do other comparisons end Foooooo! How can I do the former in more elegant way? Thanks. Victor.