How to Sum Values in a Ruby Array Using the Inject Method
In this lesson, I'm going to show you how to sum up values in Ruby by implementing the powerful `inject` method and iterating over an array. Being able to sum up values in an array is something you will most likely need on a regular basis and Ruby makes this very straightforward to implement.
Guide Tasks
  • Read Tutorial
  • Watch Guide Video
Video locked
This video is viewable to users with a Bottega Bootcamp license

In this lesson I'm going to examine how to sum up values in Ruby by implementing the inject method. Being able to sum up values in an array is something you will most likely need in a number of different situations. Thankfully Ruby makes this very straightforward to implement.

Before we see how to implement the inject method, I think it's beneficial to review how to generate a sum manually:

total = 0

[3, 2, 4, 53, 5, 3, 23343, 4342, 12, 3].each do |i|
  total += i
end

puts total

When you run this program it will generate the value 27700, which is the sum of all the individual values present in the array.

However, that took four lines of code. To shorten it we can use the inject method:

[3, 2, 4, 53, 5, 3, 23343, 4342, 12, 3].inject(&:+)

In this code we are calling the inject method and passing it to each element in the array. The inject method is similar to map or select in the way that it looks at each element in a collection. However it differs in the sense that it keeps track of the variable value with each iteration. This makes it possible to easily increment all of values in a collection and is thus perfect for creating sums.

But inject is not limited to creating sums. If we want to multiply all of the values in a collection we can replace + with *.

[3, 2, 4, 53, 5, 3, 23343, 4342, 12, 3].inject(&:*)

So how exactly was it this easy? It's because + is not an operator in Ruby, rather it is a method. In other programming languages, the parser interprets these symbols as operators, but Ruby treats it as a method and sends it to each of the values of the collection its iterating through.

So, this is how easy it is to generate a sum from values in an array in Ruby.