if succinctly
In Ruby, if is an expression, not a statement, thus it returns a value. This may not seem useful at first glance, but it lends itself to forming neat, concise code… Like most things in Ruby, actually.
Setting Values Concisely
Say you want to define a variable differently based on the result of an if expression. If you’re not a native to Ruby, you may find yourself coding something like this:
This breaks from the DRY principle because age = is repeated in each case. Since if is an expression, however, you could write something like this:
This evaluates the condition name == 'susie' and if it’s true, dumps the value 12 into age; oppositely, if it’s false, it dumps the value 14 into age. To be even more succinct about it, try:
1 |
age = name == 'susie' ? 12 : 14 |
One-Line if’s
A lot of the time it may be necessary to write out a one-line block of code within an if. There are several ways to do this without being as verbose as
Three lines! How wasteful. Instead, try one of the following:
if expression then actionor more concisely:if expression: actionor my personal favorite:action if expressionor for the C fan:expression ? if result is true : if result is false
For a negated if, i.e., if !expression, it may make more sense to you to use unless:
You can use unless in the same way that you use if: all the one-liners above will work. Note, however, that elsif is not available with an unless expression, though else is.
Doubling Up
You can have expressions all over the place, following and preceding blocks. For example:
That while loop will only get executed if expression is true. This may not be the most readable chunk of code, however, since the while is a multi-line block. However, if and unless expressions following one-line blocks are handy.