Ruby features the standard if conditional in both expression and expression modifier form. unless condition
is exactly equivalent to if not condition
in all contexts.
An if/unless
expression returns the value of its last expression.
if condition [then] code [elsif condition [then] code] [else code] end
unless condition code [else code] end
The basic expression form of if looks like this, and must end with an end
:
if some_condition_expression # This section executed if some_condition_expression is true end
The else
-keyword can be used to provide a section that will be executed if the condition expression evaluates to false. Only one else
may appear in an if-expression:
if some_condition_expression # This section executed if some_condition_expression is true else # This section executed if some_condition_expression is false end
The elsif
-keyword can be used to create multiple mutually exclusive conditionals. If the conditional in the initial if
is not true, then each elsif
conditional is evaluated in descending order until one is true. If none is, the else
-section is executed if there is one:
if cond_one # cond_one is true elsif cond_two # cond_one is not true and cond_two is true elsif cond_three # cond_one is not true and cond_two is not true and cond_three is true else # cond_one, cond_two and cond_three are all not true end
With unless
, it is not possible to define elsif
s, just else
.
There if
expression may have an optional then
added, but it is usually elided.
if some_condition_expression then # ... elsif some_other_condition_expression then # ... end
However, then
is necessary if you want to keep the if
expression in a single line.
if some_condition_expression then do_something end