diff options
author | mrkn <mrkn@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2016-05-17 14:09:37 +0000 |
---|---|---|
committer | mrkn <mrkn@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2016-05-17 14:09:37 +0000 |
commit | 41d002bbad90e2c290d3854a9543c907e86ce210 (patch) | |
tree | 18a2449cc49d1c564f38e9ae965948b970a5da44 /enum.c | |
parent | 41ef7ec381338a97d15a6b4b18acd8b426a9ce79 (diff) |
Write document of Enumerable#sum
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@55033 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'enum.c')
-rw-r--r-- | enum.c | 26 |
1 files changed, 26 insertions, 0 deletions
@@ -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 <i>enum</i> is empty, it returns <i>init</i>. + * + * 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 <i>init</i> 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) |