module Enumerable
def collect_one(default=nil)
inject(default) do |d,e|
if v = yield(e)
break v
else
d
end
end
end
end

So this:

  element = %w(a bb ccc).detect{|e| /b/ =~ e}
size = (element ? element.size : 0)

Becomes this:

  size = %w(a bb ccc).collect_one(0){|e| e.size if /b/ =~ e}

Discussion starter: does the name communicate?

Contact us today at (919) 521-4240 or nathaniel@terralien.com

Ruby Rails Terralien is expert in Ruby and Ruby on Rails development.