sum(init=0) -> object
[permalink][rdoc][edit]sum(init=0) {|e| expr } -> object
-
要素の合計を返します。
ブロックが与えられた場合、加算する前に各要素にブロックが適用されます。
selfが空の場合、initを返します。
{ 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
init 引数を明示的に指名すると数値以外のオブジェクトにも使えます。
{ 1 => 10, 2 => 20 }.sum([]) #=> [1, 10, 2, 20] "a\nb\nc".each_line.lazy.map(&:chomp).sum("") #=> "abc" [[1], [[2]], [3]].sum([]) #=> [1, [2], 3]
"+" メソッドが再定義されている場合、Enumerable#sum は再定義を無視することがあります(例えばInteger#+)。
[SEE_ALSO] Array#sum