gpt4 book ai didi

if-statement - Erlang 等价于 if else

转载 作者:行者123 更新时间:2023-12-03 21:03:12 24 4
gpt4 key购买 nike

我有两部分要执行的代码。两者都是条件

if Value1 < N do something 

else if Value1 >= N do something

if Value2 < N do something

else if Value2 >= N do something

我希望每个语句都执行。

if 在 erlang 中如何工作?没有别的。我使用了多个守卫,但看起来我有 4 个 if 语句。 2人一组。
if some condition   
code;

if other condition
code

end.

我收到语法错误。

最佳答案

if 的表格是:

if
<guard 1> -> <body1> ;
<guard 2> -> <body2> ;
...
end

它以自上而下的顺序(这是定义的)尝试 if 子句中的守卫,直到它达到一个成功的测试,然后对该子句的主体进行评估并且 if表达式返回正文中最后一个表达式的值。所以 else其他语言中的位已融入其中。如果没有一个守卫成功,那么 if_clause产生错误。一个常见的包罗万象的守卫只是 true这总是成功的,但包罗万象可以是任何真实的东西。
case 的表格是:
case <expr> of
<pat 1> -> <body1> ;
<pat 2> -> <body2> ;
...
end

它的工作原理是首先评估然后尝试将该值与 case-clause 中的模式以 op-down 顺序(这是定义的)匹配,直到一个匹配,然后该子句的主体是
评估和 case表达式返回正文中最后一个表达式的值。如果没有模式匹配,则 case_clause产生错误。

请注意 ifcase都是表达式(一切都是表达式),因此它们都必须返回值。如果没有任何成功/匹配,这就是没有默认值的原因之一。还强制您涵盖所有选项;这对于 case 尤其重要. if只是 case 的退化案例所以它继承了它。有一点历史 if在 Erlang 基本原理中,您可以在 trapexit.org 上的用户贡献下找到它。

关于if-statement - Erlang 等价于 if else,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4327860/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com