jar*_*ryd 14 erlang if-statement
我有两部分代码要执行.两者都是条件
if Value1 < N do something
else if Value1 >= N do something
if Value2 < N do something
else if Value2 >= N do something
Run Code Online (Sandbox Code Playgroud)
我希望每个人都能执行一个声明.
如何在erlang中工作?没有别的.我使用多个警卫,但看起来我有4个if语句.分为2组.
if some condition
code;
if other condition
code
end.
Run Code Online (Sandbox Code Playgroud)
我收到语法错误.
rvi*_*ing 23
一个表格if是:
if
<guard 1> -> <body1> ;
<guard 2> -> <body2> ;
...
end
Run Code Online (Sandbox Code Playgroud)
它以自上而下的顺序尝试if-clauses中的守卫(这是定义的)直到它到达成功的测试,然后评估该子句的主体并且if表达式返回正文中最后一个表达式的值.所以else其他语言中的位被融入其中.如果没有一个防护装置成功,则会产生if_clause错误.一个普通的全能后卫true总是能够取得成功,但是一个全能的东西都可以是真实的.
a的表单case是:
case <expr> of
<pat 1> -> <body1> ;
<pat 2> -> <body2> ;
...
end
Run Code Online (Sandbox Code Playgroud)
它的工作原理是第一评估,然后试图匹配与在运算向下的顺序的情况下子句图案(这被定义),直到一个相匹配,则该子句体评价为值和case表达在返回最后一个表达式的值身体.如果没有模式匹配,则case_clause生成错误.
请注意,if并且case都是表达式(一切都是表达式),因此它们都必须返回值.如果没有成功/匹配,这就是没有默认值的一个原因.还强迫你覆盖所有选项; 这对于特别重要case.if只是一个堕落的情况,case所以它继承了它.有一点历史的if用Erlang基本原理,你可以根据用户的捐款找到trapexit.org.
Ree*_*ore 13
Erlang不允许你有一个if没有true语句选项.这是真实的陈述还是真实的陈述true取决于你,但让你true成为else其他语言是司空见惯的事.
if
some_condition -> some_code;
some_other_condition -> some_other_code;
true -> else_code
end.
Run Code Online (Sandbox Code Playgroud)
请参阅"如果是什么?" 本页有关此内容的更多信息.
记住if在Erlang中有一个返回的值,它是一个表达式.这并不是说if像在C或Java.
如果你想为一个值做一些事情,代码应该是这样的;
if
% do something and get the value
X >= Val -> Something;
% for doing something otherwise and get the value
true -> Else_than_the_Something
end.
Run Code Online (Sandbox Code Playgroud)
有关更多详细信息,请参阅" ifErlang参考手册" 表达式一节.
首先,我建议你习惯使用'case'语句,因为'if'条件仅限于保护表达式:
case custom_call(A) of
1 -> do1(A);
2 -> do2(A)
end.
Run Code Online (Sandbox Code Playgroud)
除了从R13开始工作的"if"和"case"之外,还有一种方法可以执行条件执行:
1> N =10.
10
2> ((N > 10) andalso more).
false
3> ((N == 10) andalso equals).
equals
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
40503 次 |
| 最近记录: |