With the ruby ternary operator we can write the following logic for a simple if else construct:
a = true ? 'a' : 'b' #=> "a"
But what if I wanted to write this as if foo 'a' elsif bar 'b' else 'c'
?
I could write it as the following, but it's a little difficult to follow:
foo = true
a = foo ? 'a' : (bar ? 'b' : 'c') #=> "a"
foo = false
bar = true
a = foo ? 'a' : (bar ? 'b' : 'c') #=> "b"
Are there any better options for handling such a scenario or is this our best bet if we wish to condense if..elsif..else logic into a single line?
You can use:If @item. rigged is true, it will return 'Yes' else it will return 'No'.
Ruby if...else Statement if expressions are used for conditional execution. The values false and nil are false, and everything else are true. Notice Ruby uses elsif, not else if nor elif. Executes code if the conditional is true.
In Ruby, “or” keyword returns the logical disjunction of its two operands. The condition becomes true if both the operands are true. It returns “true” when any one condition/expression is “true” and returns “false” only when all of them are “false”.
Conditionals are formed using a combination of if statements and comparison and logical operators (<, >, <=, >=, ==, != , &&, ||) . They are basic logical structures that are defined with the reserved words if , else , elsif , and end . Note that elsif is missing an "e".
a = (foo && "a" or bar && "b" or "c")
or
a = ("a" if foo) || ("b" if bar) || "c"
The Github Ruby Styleguide recommends that one liners be reserved for trivial if/else statements and that nested ternary operators be avoided. You could use the then
keyword but its considered bad practice.
if foo then 'a' elsif bar then 'b' else 'c' end
You could use cases (ruby's switch operator) if find your control statements overly complex.
a = if foo then 'a' elsif bar then 'b' else 'c' end
You can also write:
x = if foo then 'a' elsif bar then 'b' else 'c' end
However, this isn't idiomatic formatting in Ruby.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With