if-statement c标签if - 如何实现if-else





if标签 jsp (5)


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

在Erlang中没有真正的其他东西,你只需要匹配true。 有关Erlang文档的更多信息。

你必须密切关注';' 终结者:

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

它不是一种复制粘贴友好语言。

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

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



模式匹配是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表达式的更多信息




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.



另外一个选择:

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



您可以轻松使用ng-show,例如:

    <div ng-repeater="item in items">
        <div>{{item.description}}</div>
        <div ng-show="isExists(item)">available</div>
        <div ng-show="!isExists(item)">oh no, you don't have it</div>
    </div>

对于更复杂的测试,您可以使用ng-switch语句:

    <div ng-repeater="item in items">
        <div>{{item.description}}</div>
        <div ng-switch on="isExists(item)">
            <span ng-switch-when="true">Available</span>
            <span ng-switch-default>oh no, you don't have it</span>
        </div>
    </div>




if-statement erlang