[if-statement] 如何实现if-else


Answers

模式匹配是Erlangs的众多优势之一,它通常可以代替if语句使用。 对函数参数进行模式匹配或使用case表达式(也是模式匹配)通常更具可读性。

假设你有一个函数some_function ,它接受两个参数。 如果参数相等,则计算expression1,否则计算expression2。 这可以用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将始终被评估,因为ab是原子,并且永远不会彼此相等.Erlang中的变量是大写的。)

您可以here阅读有关Erlang表达式的更多信息

Question

如何在erlang中实现这个if-else表达式?

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



另外一个选择:

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



Related