From: Intransition Date: 2009-11-13T01:07:41+09:00 Subject: Enumerable#find_yield, useful shortcut? better name? This method has long been suggested to me as #map_detect. At first I wasn't sure of it's usefulness. But now I think it's okay. (Your thoughts?). In any case, the name has to go. Currently I'm thinking #find_yield. Any better suggestions? module Enumerable # Similar to #detect and #find. Yields each element to the block # and returns the first result that evaluates as *true*, # terminating early. # # obj1.foo? #=> false # obj2.foo? #=> true # obj2.foo #=> "value" # # [obj1, obj2].find_yield { |obj| obj.foo if obj.foo? } #=> "value" # # If the block is never true, return the +fallback+ parameter, # or nil if no +fallback+ is specified. # # [1,2,3].find_yield { |_| false } #=> nil # [false].find_yield(1) { |_| false } #=> 1 # def find_yield(fallback = nil) #:yield: each do |member| result = yield(member) return result if result end fallback end end Thanks.