Loops in Ruby

Introduction

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

while

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
end

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

until

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
end

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
end

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

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

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

loop do 
  puts "Hello" 
end

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
end

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 )

.times

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 
}
1
2
Hello
false

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}!"
}

““
2
3
4
5
6
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 *

*