我在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.
Run Code Online (Sandbox Code Playgroud)
编译源代码,我收到此错误:
syntax error before: '=='
Run Code Online (Sandbox Code Playgroud)
我拉出了一个或者clausule中的一个表达式,它起作用了.正如你所看到的那样,我非常喜欢erlang,如果它看起来如此简单,我真的不明白为什么会这样.有帮助吗?谢谢
根据Erlang中的运算符优先级,优先级or高于==.所以你写的表达式被视为
LX == (2 or LY) == 2
Run Code Online (Sandbox Code Playgroud)
这是一个语法错误.要解决此问题,您必须在每个术语周围使用括号:
(LX == 2) or (LY == 2).
Run Code Online (Sandbox Code Playgroud)
另外,您也可以使用orelse具有较低的优先级比==:
LX == 2 orelse LY == 2.
Run Code Online (Sandbox Code Playgroud)