diff --git a/mrbgems/mruby-enum-ext/mrblib/enum.rb b/mrbgems/mruby-enum-ext/mrblib/enum.rb index 5f39235e0..3a4416196 100644 --- a/mrbgems/mruby-enum-ext/mrblib/enum.rb +++ b/mrbgems/mruby-enum-ext/mrblib/enum.rb @@ -856,4 +856,28 @@ module Enumerable end hash end + + ## + # call-seq: + # enum.sum(count=1) -> numeric + # enum.sum(count=1){...} -> numeric + # + # Returns the sum of elements. For example, [e1, e2, e3].sum + # returns e1 + e2 + e3. If a block is given, each element is + # processed by the block, e.g [e1, e2, e3].sum{_1.m} gives + # e1.m + e2.m + e3.m. + # + def sum(init=0,&block) + result=init + if block + self.each do |e| + result += block.call(e) + end + else + self.each do |e| + result += e + end + end + result + end end