Before we start with
unless, let's see some basic things which we have already seen before. We are doing this because, it explains your question Why Unless? So, we see about
if keyword and
OR operator returns true, even if one of the condition is true.
In the above code a variable weight is assigned with a value 32. Then a condition is checked using
If the weight is less than 35 or if the weight is greater than 70 it displays "You need to see a doctor".
Now, the first condition is checked weight < 35, this condition becomes true because the value of weight is 32 and
OR operator doesn't check the second condition if the first condition is true. It simply returns true.
When the condition is true, it displays the message "You need to see a doctor". Now, consider the value of weight as 87.
The first condition is checked weight < 35, the condition fails and it checks the second condition weight > 70, the condition is true, so the message is displayed. Now, what if the weight contains value between 35 and 70?
As usual, the first condition is checked, it fails and the second condition is checked and it also fails. Therefore, the
puts statement is not executed.
When we talk about
if keyword, it is used to make a decision, whether to execute the set of code or not. But, what if wanted to test the opposite of if? That is, you want to execute the code only when the condition is false. This is where
unless comes into picture.
This program displays the message "You're eligible to Vote" when the age is greater than 18. The value stored in the variable age is 23.
When the condition is checked, it returns false and the puts statement is executed. This might be confusing.
Remember that unless is opposite of if.
You, can read this code statement as You're eligible to vote if your age is not less than 18. That is, it is similar to
puts "You're eligible to Vote" if age > 18
If you're confused in reading the
unless statement, simply read it in the opposite way of