From: Simon Strandgaard <0bz63fz3m1qt3001@...> Date: 2003-07-31T06:53:10+09:00 Subject: Re: collect_by Great idea. I were just experimenting, when I discovered a glitch in my understanding of Ruby.. What is the difference between 'Enumerable1' and 'Enumerable'. Why does the 'Enumerable' work and the other not ??? Please enligthen me :-) module Enumerable1 def collect_by h = Hash.new [] each{|i| h[yield(i)].push i} h end end module Enumerable def collect_by h = {} each{|i| (h[yield(i)] ||= []) << i} h end end a = (1..10).to_a p a.collect_by {|i| i % 2} # Enumerable1 #=> {} # Enumerable #=> {0=>[2, 4, 6, 8, 10], 1=>[1, 3, 5, 7, 9]} -- Simon Strandgaard