class Array def inject(n) each { |value| n = yield(n, value) } n end def sum inject(0) { |n, value| n + value } end def product inject(1) { |n, value| n * value } end end [ 1, 2, 3, 4, 5 ].sum » 15 [ 1, 2, 3, 4, 5 ].product » 120 # for example: class Array def molest each do |o| yield o end end end [1,2,3,4].molest do |o| puts o + 5 end