Joe Bowers wrote: > This looks like prime .inject territory > > enum.inject([]) do |l,obj| > (l << obj.a_method) if obj.respond_to? :a_method > end Wonderful! Now, what if I wanted to generalize it? That is, a method on Enumerable that returns an array of the results of calling a a given block with each item in the array, excluding the items that do not respond to that method. This is what I've got: module Enumerable # need a better name... def collect_x collect do |obj| begin yield obj rescue NoMethodError nil end end.compact end end Though it's still verbose...