From a4099ff776f767790a2eee43200a8d148fd1cf8c Mon Sep 17 00:00:00 2001 From: "Yukihiro \"Matz\" Matsumoto" Date: Mon, 19 Sep 2022 10:49:02 +0900 Subject: [PATCH] enum-ext/enum.rb: add Enumerable#sum --- mrbgems/mruby-enum-ext/mrblib/enum.rb | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) 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