Simulate Ternary Operator in Elixir
How to Do the Similar Conditional One-Line Check in Elixir? If (X > 0)? X: Nil Is This the Only Equivalent in Elixir World? If True, Do: 1, Else: 2 5 Answers...
How to do the similar conditional one-line check in Elixir?
if (x > 0) ? x : nil
Is this the only equivalent in elixir world?
if true, do: 1, else: 2
5 Answers
To me, the if IS the equivalent of a ternary operator as it evaluates to a value which for various other languages it doesn't.
so x = if false, do: 1, else: 2
is basically x = false? 1 : 2
Not sure why Ruby adopted it ( if you are coming from Ruby ) as it has assignable if statements. in C the ternary is useful as the code bloats with the equivalent if statements. Of course C programmers desperate for terseness went nuts and did many nested upon nested ternaries :)
Yes, there's nothing like a ternary operator in Elixir. The keyword version of if is probably the closest thing:
if condition, do: true_expr, else: false_expr
I saw this alternative in an tweet,
is_it_true && "TRUE" || "FALSE"
An unmentioned and more verbose alternative is
case condition do true -> true_expr; _ -> false_expr end
def ternary(condition, true_val, false_val) do
if(condition, do: true_val, else: false_val)
end
so then
ternary(a < b, :ok, :error)