From: Robin Stocker Date: 2006-08-01T00:38:53+09:00 Subject: Re: Weird elusive bug using Comparable Pedro C�rte-Real wrote: > #ideas on making this much shorter are welcome > def <=>(other) > VALS.each do |key| > v1 = self.send(key) > v2 = other.send(key) > > result = (v1 <=> v2) > if result != 0 > return result > end > end > 0 > end > end How about something like this (untested): def <=>(other) VALS.map{ |key| self.send(key) } <=> VALS.map{ |key| other.send(key) } end