Ruby 2.5.0 リファレンスマニュアル > ライブラリ一覧 > 組み込みライブラリ > Enumerableモジュール > sum

instance method Enumerable#sum

sum(init=0) -> object[permalink][rdoc]
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