On Jan 21, 2008, at 2:07 PM, Max Williams wrote: > Xavier Noria wrote: >> On Jan 21, 2008, at 12:23 PM, Max Williams wrote: >> >>> >>> Can anyone tell me a nice and simple way of doing this? >> >> Enumerable#parition or Set#classify might help. >> >> -- fxn > > hmmm...i couldn't work out how to make it easier with either of those. > I ended up doing this, which isn't very clever but it did seem to > work. > > groups = [] > vals = collection.collect{|obj| [obj.val1, obj.val2]}.uniq! > for val in vals > groups << collection.select{|obj| obj.val1 == val[0] && obj.val2 = > val[1] Note there is an assignment instead of an equals operator there. > > end Yes, I think that's equivalent to collection.to_set.classify {|x| [x.foo, x.bar]}.values plus perhaps a map to_a. -- fxn