Erlang 语法错误, 'Or'

标签 erlang

我在 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 Erlangor的优先级高于== .所以你写的表达被视为

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/

相关文章:

erlang - 我可以在不停止运行应用程序的情况下重新加载单个更改的 Erlang 模块吗?

file - 使用 Erlang 将整个文本文件读入变量,进行文本替换并将修改后的文件写入新目录

erlang - 监督树启动失败

mysql - 使用 MySQL/OTP 运行 "Select * From tableName"查询,没有 'WHERE'

erlang - Couchdb无法启动。 -无法启动Mochiweb : eaddrinuse

erlang - 如何在erlang中查找对应用程序的所有外部调用

erlang - Elixir 列出命名空间中的所有模块

erlang - 如何检查 ETS Erlang/Elixir 中是否存在命名表

list - Erlang:递归与列表

erlang - 如何检查 Phoenix/Elixir/Erlang 应用程序的正常运行时间?