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

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 :)

0

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
0

I saw this alternative in an tweet,

is_it_true && "TRUE" || "FALSE"
3

An unmentioned and more verbose alternative is

case condition do true -> true_expr; _ -> false_expr end
1
def ternary(condition, true_val, false_val) do
  if(condition, do: true_val, else: false_val)
end

so then

ternary(a < b, :ok, :error)
1

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Elena Rostova

Elena Rostova

Lead Health, Wellness & Medical Journalist

Elena Rostova holds a Master's degree in Public Health Journalism. She covers groundbreaking medical research, holistic wellness trends, mental health awareness, and nutritional science.

Share this article
Twitter Facebook Pinterest