Erlang复合布尔表达式

jef*_*eon 4 erlang boolean

我仍在使用erlang找到我的脚,并且我阅读了关于使用"和","或"运算符的文档,但为什么以下不评估?

X = 15,
Y = 20,
X==15 and Y==20.
Run Code Online (Sandbox Code Playgroud)

我期待终端中的"真实",但我在==之前得到"语法错误".

jld*_*ont 10

尝试:

X = 15.
Y = 20.
(X==15) and (Y==20).
Run Code Online (Sandbox Code Playgroud)


cth*_*ops 8

你可能不想使用和.有两个问题,首先,你已经注意到它的优先级是奇怪的,其次它不会使它的第二个参数短路.

1> false and exit(oops).
** exception exit: oops
2> false andalso exit(oops).
false
Run Code Online (Sandbox Code Playgroud)

andalso后来被引入语言,并且行为方式可能更熟悉.一般来说,除非你有充分的理由愿意和使用,否则也要使用.

顺便说一句,orelse相当于或.


mar*_*rds 5

没有支撑,你也可以做

X = 15.
Y = 20.
X == 15 andalso Y == 20.
Run Code Online (Sandbox Code Playgroud)