Πώς να αθροίσετε πίνακα αριθμών στη Ruby;

Έχω έναν πίνακα ακεραίων αριθμών.

Για παράδειγμα:

array = [123,321,12389]

Υπάρχει κάποιος ωραίος τρόπος για να πάρετε το άθροισμά τους;

Ξέρω ότι...

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

θα λειτουργούσε.

Ή δοκιμάστε τον τρόπο Ruby 1.9:

array.inject(0, :+)

Σημείωση: η βασική περίπτωση 0 είναι απαραίτητη, διαφορετικά θα επιστρέφεται nil σε άδειους πίνακες:

> [].inject(:+)
nil
> [].inject(0, :+)
0
Σχόλια (9)
Λύση

Δοκιμάστε αυτό:

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

Βλέπε Ruby's Enumerable Documentation

(σημείωση: η βασική περίπτωση 0 είναι απαραίτητη για να επιστρέφεται το 0 σε έναν άδειο πίνακα αντί για το nil)

Σχόλια (7)

Εναλλακτικά (απλά για σύγκριση), αν έχετε εγκατεστημένο το Rails (στην πραγματικότητα μόνο το ActiveSupport):

require 'activesupport'
array.sum
Σχόλια (3)