¿Cómo sumar un array de números en Ruby?

Tengo un array de enteros.

Por ejemplo:

array = [123,321,12389]

¿Hay alguna manera de obtener la suma de ellos?

Sé que

sum = 0
array.each { |a| sum+=a }

funcionaría.

O prueba con el método Ruby 1.9:

array.inject(0, :+)

Nota: el caso base 0 es necesario, de lo contrario se devolverá nil en arrays vacíos:

> [].inject(:+)
nil
> [].inject(0, :+)
0
Comentarios (9)
Solución

Prueba esto:

array.inject(0){|sum,x| sum + x }

Ver documentación de Ruby's Enumerable

(nota: el caso base 0 es necesario para que se devuelva 0 en un array vacío en lugar de nil)

Comentarios (7)

Alternativamente (sólo para comparar), si tienes instalado Rails (en realidad sólo ActiveSupport):

require 'activesupport'
array.sum
Comentarios (3)