我在 erlang 中得到了这个非常新和简单的函数:
function_x(L) ->
X = lists:filter((fun(N)-> N =:= 2 end), L),
Y = lists:filter((fun(N)-> N =:= 3 end), L),
LX = length(X),
LY = length(Y),
LX == 2 or LY == 2.
编译源代码,我得到这个错误:
syntax error before: '=='
我从 or clausule 中提取了一个表达式,它起作用了。如您所见,我对 erlang 非常陌生,如果这看起来如此简单,我真的不明白为什么会发生这种情况。有什么帮助吗?谢谢
最佳答案
根据operator precedence in Erlang ,or
的优先级高于==
.所以你写的表达被视为
LX == (2 or LY) == 2
这是一个语法错误。要解决此问题,您必须在每个术语周围使用括号:
(LX == 2) or (LY == 2).
或者,您可以使用
orelse
其优先级低于 ==
:LX == 2 orelse LY == 2.
关于Erlang 语法错误, 'Or',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7699814/