Write document of Enumerable#sum

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@55033 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
mrkn 2016-05-17 14:09:37 +00:00
Родитель 41ef7ec381
Коммит 41d002bbad
2 изменённых файлов: 30 добавлений и 0 удалений

Просмотреть файл

@ -1,3 +1,7 @@
Tue May 17 23:08:00 2016 Kenta Murata <mrkn@mrkn.jp>
* enum.c (enum_sum): [DOC] Write documentation.
Tue May 17 22:53:00 2016 Kenta Murata <mrkn@mrkn.jp>
* enum.c (enum_sum): Implement Enumerable#sum.

26
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 <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)