If Else in Erlang
Branching with if
and case
in Erlang is straightforward. Here’s a basic example:
main() ->
if
7 rem 2 =:= 0 ->
io:format("7 is even~n");
true ->
io:format("7 is odd~n")
end.
You can have an if
statement without an else clause by using true
as the final condition:
if
8 rem 4 =:= 0 ->
io:format("8 is divisible by 4~n");
true -> ok
end.
Logical operators like andalso
and orelse
are often useful in conditions:
if
(8 rem 2 =:= 0) orelse (7 rem 2 =:= 0) ->
io:format("either 8 or 7 are even~n");
true -> ok
end.
In Erlang, we often use pattern matching and case
statements for more complex conditionals:
Num = 9,
case Num of
N when N < 0 ->
io:format("~p is negative~n", [N]);
N when N < 10 ->
io:format("~p has 1 digit~n", [N]);
N ->
io:format("~p has multiple digits~n", [N])
end.
Note that in Erlang, you don’t need parentheses around conditions, but each clause in an if
or case
statement must end with a semicolon, except for the last one which ends with end.
To run this program:
$ erlc if_else.erl
$ erl -noshell -s if_else main -s init stop
7 is odd
8 is divisible by 4
either 8 or 7 are even
9 has 1 digit
In Erlang, there’s no direct equivalent to the ternary operator, but you can use short case
statements or functions for similar concise conditional expressions.