instance method Array#sum

sum(init=0) -> object[permalink][rdoc][edit]
sum(init=0) {|e| expr } -> object

要素の合計を返します。例えば [e1, e2, e3].sum は init + e1 + e2 + e3 を返します。

ブロックが与えられた場合、加算する前に各要素にブロックが適用されます。

配列が空の場合、initを返します。



[].sum                             #=> 0
[].sum(0.0)                        #=> 0.0
[1, 2, 3].sum                      #=> 6
[3, 5.5].sum                       #=> 8.5
[2.5, 3.0].sum(0.0) {|e| e * e }   #=> 15.25
[Object.new].sum                   #=> TypeError

配列の平均値は以下のように求められます。



mean = ary.sum(0.0) / ary.length

init 引数を明示的に指名すると数値以外のオブジェクトにも使えます。



["a", "b", "c"].sum("")            #=> "abc"
[[1], [[2]], [3]].sum([])          #=> [1, [2], 3]

しかし、文字列の配列や配列の配列の場合 Array#joinArray#flatten の方が Array#sum よりも高速です。



["a", "b", "c"].join               #=> "abc"
[[1], [[2]], [3]].flatten(1)       #=> [1, [2], 3]

"+" メソッドが再定義されている場合、Array#sum は再定義を無視することがあります(例えば Integer#+)。

[SEE_ALSO] Enumerable#sum