>>> sender: "Robert Dober" date: "Fri, Jan 12, 2007 at 06:56:08PM +0900" <<<EOQ > [..] > > The following is a very common pattern. > > an_enum.map{ |ele| ele.a_method } > > I believe that it is sufficiently common to be generalized. > > There are two idioms I would like to see > > an_enum.apply_to_all :a_method Ok, I'm still a newbie, but why not extend map instead of introducing a new method? As in: %w[apples oranges kiwi].map :capitalize # => ["Apples", "Oranges", "Kiwi"] Still feels like the good old "map" and acts like it... Here's my naive implementation, that produced the result above: class Array alias :old_map :map def map(arg = nil, &block) if block old_map &block elsif ! arg.nil? if arg.is_a?(Symbol) old_map {|x| x.send(arg)} else raise ArgumentError, "Don't know how to handle #{arg.class} arguments" end else raise ArgumentError, "No parameter and no block given!" end end end All the best, Alex