From: Yossef Mendelssohn Date: 2007-11-25T07:12:52+09:00 Subject: Enumerable#detect_result ? Actual code from a recent project: # This is bunk, but I'm tired and can't think of the right way to do this # I was trying formats.detect, but that just returns the format, not the result result = nil formats.each do |f| result = f.process(mesg) break if result end In this context, 'formats' is an array of format objects, each of which represents a format a message can take. The process method takes in a message, checks it against the format object's configuration, and returns either nil (if there was no match) or some useful value. Thanks to testing, my original concept of formats.detect { |f| f.process(mesg) } was rejected as being wrong. After all, I want the result of the process call, not the format object. I could go with collect/detect, but knowing I want the first makes that rather pointless, especially if processing could be expensive and the array could be long. Is there anything like Enumerable#detect_result? Is there any desire for it? Is there any better name? -- -yossef