Loops in Ruby


I keep going on my Ruby’s journey 🙂 This time, looping through stuff!


There are a few ways you can set up loops in Ruby. One of the most common, in a lot of languages really, is the while loop. Like so:

i = 0

while i < 10
  puts i
  i += 1

Note: You can use +=1 as a shortcut for i = i + 1. The same way you can use -=, *= and /= for other operations.


The until loop is like while, but backwards. Basically it means, while the condition is false, execute the code inside the until loop:

i = 1

until i == 16 # as long as this condition is false, run the loop
  i *= 2

puts i #16

for / in

The for in loop iterates through a range of numbers. You can specify if the last number in the range must be included or excluded.

for n in 1..10  # Includes 10
  puts n # stops at 10

for n in 1...10 # Excludes 10
  puts n # stops at 9

As you can see, if you type 2 dots between the first and last number in the range, this means you include the last one. Three dots means the last number is excluded.


loop is a Ruby method that invokes the same code block over and over.

loop do 
  puts "Hello" 

This creates an infinite loop that prints “Hello” an infinite number of times.

Note: You can replace do/end by curly braces {}. So, this is the same thing:

loop {
  puts "Hello"

Obviously, infinite loops are not always wanted. In order to break the loop, you can use the break keyword:

i = 5
loop {
  puts i # prints 5 through 20
  i += 1
  break if i > 20 

You can also use the next keyword to skip to the next iteration

for n in 0...10 
 next if n == 3
 puts n
 break if n == 5

This will print 0, 1, 2, 4, 5. Why? Because when the counter n is equal to 3, we call next, meaning the rest of the code block is not executed, therefore we don’t execute the puts command. When the counter n gets to 5, we encounter the break statement and leave the loop ( after calling puts )


The .times method is a for loop in compact form. The syntax reads like english even:

3.times do puts "Hello Ruby!" end

Can you guess what that prints out?

Hello Ruby!
Hello Ruby!
Hello Ruby!

You specify the number of times you want the loop to run, followed by the .times method. Then, indicates the code block you want to execute each time. Of course, you can replace the do/end keywords by curly braces:

3.times { puts "Hello Ruby!" }

Looping through Arrays

Arrays are a way to store multiple values inside a variable. To declare an array in Ruby, you use []:

iAmAnEmptyArray = []

# OR

arrayWithStuff = [1, 42, "Hello"]

Ruby gives you the .each method in order to loop through arrays. Notice the syntax:

arr = [1, 2, "Hello", false]
arr.each { |a|
 puts a 

The value you are retrieving at each passage is declared between the pipes ||. Of course, you can process theses values in any way you see fit:

arr = [1, 2, 3, 4, 5]

arr.each { |x|
 puts x + 1

arr2 = ["World", "Ruby", "Mom"]

arr2.each { |w|
  puts "Hello #{w}!"

Hello World!
Hello Ruby!
Hello Mom!

Notice the syntax for using the variable name inside a string in the second loop: #{variable_name}.

Well, I think this is enough for this article. I’ll see you next time for more Ruby noob stuff!

Have fun!

Your email address will not be published. Required fields are marked *