Ruby also offers the concept of loops that can perform similar actions. However, each loop method takes a different approach, and the purpose of the loop dictates its efficiency.
This quick guide will walk you through Ruby’s most common types of loops, including the while loop, for loop, and do while loop.
The While Loop
Let us start with the while loop because it will lay a logical foundation to implement other loop methods.
Ruby’s while loop helps test a condition and perform an action while that condition is true. The specified condition is tested at the beginning of the loop and should return either a Boolean true or Boolean false.
While the condition is true, the block inside the while loop is executed continuously and terminates once the condition is false.
The most common use of the while loop is when the number of program iterations is undetermined. For example, a loop that continuously asks the user for a password can run once or an infinite number of times.
The general syntax to implement a while loop in Ruby is:
# executeme
end
We start by calling the while keyword, which opens the loop block.
Next, we specify the condition for which the loop checks followed by the do keyword.
Inside the block, we add all the targeted code we wish to execute.
Finally, we close the loop by using the end keyword.
Ruby While Loop Example
Let us implement a simple example to illustrate how we can use a while loop. In this case, a simple countdown will suffice.
while x > 0
x -= 1
puts "#{x} seconds remaining"
end
In the above example, we create a variable x and set the value to 60.
We then implement a loop to check if the value of x is greater than 0 and if true, put a message showing how many seconds are remaining.
To avoid the loop from running forever, we implement a decrement that deducts 1 for every iteration the loops run.
The For Loop
The next popular and useful loop method is a for loop. In some ways, it is similar to a while loop, but it implements the looping functionality differently.
The most common use of the for loop is when there’s a pre-determined number of iterations the loop needs to run.
For example, if the total number of password tries is less than 5, keep asking for a password; otherwise, block the account.
We also implement the condition for a for loop at the beginning of the loop.
The syntax for a for loop in Ruby is:
# execute me
end
In the for-loop syntax above, we start by calling the for keyword, indicating the beginning of the for-loop block.
Next, we set the variable that acts as a reference for the condition. Think of it as the current trial in the password trial analogy.
We then use the in keyword, a Ruby pre-defined keyword commonly used in a for loop.
The next part is the expression; this is the range which to evaluate the variable. This can be a single range of values, an array to iterate through.
The next part is the do keyword that opens the for-loop block to add the code to perform while the condition is true.
Finally, we close the for loop with an end block.
Ruby For Loop Example
The following example illustrates how to use the for loop in Ruby.
puts i
end
In the example above, we define the variable i, which is just a placeholder for each item in the range of 1 to 10.
Ruby has two range operators: two dots (..) and three dots (…).
The two dots notation is known as an inclusive range operator. That means it will include the max value in the range. Think of it as less than or equal to.
The three dots notation—also called an exclusive operator—, does not include the max value in the operator. Similar to a less than.
If we run the code above, it should print the values from 1 and include 10 since we used the inclusive range.
To exclude 10 from the range of values, use the three-dot notation as:
puts i
end
Another example of using the for loops is to get items in an array. For example, suppose we have the following array:
By default, if we wanted to access an item in the array, we can use the index as:
If we wanted to access all items in the array, we would have to implement multiple repetitive lines.
puts frameworks[1]
puts frameworks[2]
puts frameworks[n]
Doing this is highly inefficient and moot when we do not know the total number of items in the array.
To solve this, we can implement a simple for loop:
for framework in frameworks do
puts framework
end
The above item can be interpreted as: for each item in the items, print, the item.
Do While Loop
Another loop method is the do while loop. It is very similar to while loop but checks for the condition after executing the code block. Hence, even if the condition never evaluates to true, the loop will execute at least once.
The syntax for a do while loop in Ruby is:
# run me once
break if [condition]
end
Ruby Do While Loop Example
The simple example below shows how to use a do while loop in Ruby:
puts "Hi there!"
i = 10
if i == 10
break
end
end
The loop will run once and exit.
Conclusion
In this tutorial, we discussed the basics of programming using loops in Ruby. Ruby has other loop methods that allow you to perform actions on other structures.