Just to add to the spectrum (i.e. I’m not recommending this) I see Greg’s suggestion as a “cleaned up” version of
a = 20
b = 10
result =
case {a,b} do
{c,c} -> "equal"
{c,d} when c > d -> "a"
{c,d} when c < d -> "b"
end
reply = {:ok, result}
IO.inspect(reply)
which could also be written as
a = 20
b = 10
result =
case {a,b} do
_ when a > b -> "a"
_ when a < b -> "b"
_ -> "equal"
end
reply = {:ok, result}
IO.inspect(reply)
leading to the accepted solution
a = 20
b = 10
result =
cond do
a > b -> "a"
a < b -> "b"
true -> "equal"
end
reply = {:ok, result}
IO.inspect(reply)
And if do always has a “second” value it evaluates to when the condition is false - it will return nil
a = 10
b = 20
value1 =
if a > b do
"a"
end
value2 =
cond do
a > b -> "a"
true -> nil
end
IO.inspect({value1,value2})
> {nil, nil}






















