From 808be5f96b17246341c0ee7a32e2bbae3e8dc13f Mon Sep 17 00:00:00 2001 From: mrkn Date: Tue, 17 May 2016 14:09:37 +0000 Subject: Write document of Enumerable#sum git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@55033 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- enum.c | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) (limited to 'enum.c') diff --git a/enum.c b/enum.c index 157b615d99..56d304c7a9 100644 --- a/enum.c +++ b/enum.c @@ -3668,6 +3668,32 @@ enum_sum_iter_i(RB_BLOCK_CALL_FUNC_ARGLIST(i, args)) /* + * call-seq: + * enum.sum(init=0) -> number + * enum.sum(init=0) {|e| expr } -> number + * + * Returns the sum of elements in an Enumerable. + * + * If a block is given, the block is applied to each element + * before addition. + * + * If enum is empty, it returns init. + * + * For example: + * + * { 1 => 10, 2 => 20 }.sum {|k, v| k * v } #=> 50 + * (1..10).sum #=> 55 + * (1..10).sum {|v| v * 2 } #=> 110 + * [Object.new].each.sum #=> TypeError + * + * This method can be used for non-numeric objects by + * explicit init argument. + * + * { 1 => 10, 2 => 20 }.sum([]) #=> [1, 10, 2, 20] + * "a\nb\nc".each_line.lazy.map(&:chomp).sum("") #=> "abc" + * + * Enumerable#sum method may not respect method redefinition of "+" + * methods such as Integer#+. */ static VALUE enum_sum(int argc, VALUE* argv, VALUE obj) -- cgit v1.2.3