我刚刚开始使用Erlang。我正在尝试if声明。我发现了一个我不理解的特定行为。
以下陈述确实有效。
some_comp(Arg1) ->
if
(cal(Arg1)>50000)->'reached';
true -> 'invalid'
end.
cal(Arg2)->
%% some calculation.
但是,如果出现以下错误语法:
some_comp(Arg1) ->
Val=cal(Arg1);
if
(Val>50000)->'reached';
true -> 'invalid'
end.
cal(Arg2)->
%% some calculation.
我的问题是为什么会发生错误。没有if语句的部分 Val = cal(Arg1)确实运作良好
答案 0 :(得分:2)
因为表达式应以,
分隔,而不是;
:
Val=cal(Arg1),
if ...
;
是if
/ case
/ receive
和函数子句的分隔符。