Erlang复合布尔表达式

Erlang复合布尔表达式,erlang,boolean,Erlang,Boolean,我阅读了有关使用和、或运算符的文档,但为什么下面的内容没有进行评估 X = 15, Y = 20, X==15 and Y==20. 我希望在终端中出现“true”,但我得到了“syntax error before==”请尝试: X = 15. Y = 20. (X==15) and (Y==20). 没有支架,你也可以这样做 X = 15. Y = 20. X == 15 andalso Y == 20. 您可能不想使用和。和有两个问题,首先,正如你所注意到的,它的优先级很奇怪,其次,

我阅读了有关使用
运算符的文档,但为什么下面的内容没有进行评估

X = 15,
Y = 20,
X==15 and Y==20.
我希望在终端中出现“true”,但我得到了“syntax error before==”

请尝试:

X = 15.
Y = 20.
(X==15) and (Y==20).

没有支架,你也可以这样做

X = 15.
Y = 20.
X == 15 andalso Y == 20.

您可能不想使用和。和有两个问题,首先,正如你所注意到的,它的优先级很奇怪,其次,它没有短路第二个参数

1> false and exit(oops).
** exception exit: oops
2> false andalso exit(oops).
false
andalso后来被介绍到语言中,其行为方式可能更为熟悉。一般来说,使用andalso,除非你有充分的理由选择and


顺便说一句,orelse相当于or

herre的运算符优先级/绑定规则表,供将来参考

============

这里有一些我觉得有用的erlang“gotcha”列表


这实际上取决于您是将其用于控制测试还是布尔测试。使用and/or有助于测试“布尔”运算的返回值。