Подтвердить что ты не робот

Как реализовать if-else

Как реализовать это выражение if-else в erlang?

 if(a == b) {
   expression1
 } else {
   expression2 
 }
4b9b3361

Ответ 1

if
    a == b ->
        expr1;
    true ->
        exprElse
end

В Erlang нет ничего другого, вы просто согласитесь с истиной. Дополнительная информация в Документация Erlang.

Вы должны обратить пристальное внимание на ';' терминатор:

if
    a == b ->
        clauseN,
        expr1;
    cond2 ->
        clause1,
        clause2,
        expr2;
    cond3 ->
        expr3;
    true ->
        exprElse
end 

Это не дружественный язык для копирования-вставки.

Ответ 2

Совпадение шаблонов является одним из многих преимуществ Erlangs, и его часто можно использовать вместо операторов if. Это часто более читаемо для сопоставления шаблонов по аргументам функции или использования выражения case (которое также является сопоставлением шаблонов).

Предположим, что у вас есть функция some_function, которая принимает два аргумента. Если аргументы равны, вы вычисляете выражение1, иначе вы оцениваете выражение2. Это можно выразить в erlang как:

some_function(A, A) -> expression1;
some_function(A, B) -> expression2.

Удивительно, насколько вы можете достичь такого простого сопоставления шаблонов. С предложениями охраны вы можете выразить более сложные шаблоны, например,

some_function(A, B) when A < B -> expression3. 

Другая возможность - использовать выражение case .. of. Ваш конкретный пример будет переведен на

case a == b of
    true -> expression1;
    false -> expression2
end.

(В этом случае expression2 всегда будет оцениваться, так как a и b являются атомами и никогда не равны друг другу. Переменные в Erlang являются верхним регистром.)

Вы можете узнать больше об выражениях Erlang здесь.

Ответ 3

if
    A =:= B ->
        expr1;
    true ->
        expr2
end 

или

case A =:= B of
    true -> expr1;
    false -> expr2
end

или

case A of
    B -> expr1;
    _ -> expr2
end

или

  foo(A,B), ...

...
foo(X,X) -> expr1;
foo(_,_) -> expr2.

Ответ 4

Другая опция:

case a of
    b -> expr1;  %% true
    _ -> expr2   %% false
end.