From: Magnus Holm Date: 2009-10-27T07:28:46+09:00 Subject: [ruby-core:26341] Suggestion: #from_array I just got a little idea five minutes ago while I was showering: In 1.8 we have the annoying "problem" that { }.map/select/reject/sort returns an Array. This has been fixed in 1.9, but if you have your own class which includes Enumerable, they will still return an Array. Basically you have two options: 1) Nothing at all, and let them return arrays 2) Overload them to make them return your class So I was thinking, what if map was implemented like this: def map new_object = self.class.new each { new_object.from_array(*yield) } new_object end Then every class could simply implement #from_array: class Hash def from_array(key, value) self[key] = value end end Of course, it would have to check if the class has defined #from_array, if not it would default back to the current behaviour. What do you think? Something I'm missing; is there another way to solve this problem? //Magnus Holm