Erlang的比较运算符
op | Description |
== | 等于 |
/= | 不等于 |
=< | 小于等于 |
< | 小于 |
>= | 大于等于 |
> | 大于 |
=:= | 精确的等于 |
=/= | 精确的不等于 |
等于和精确等于的区别:
如果要比较两个数,如果两个数之间是不同的类型,比如float和int那么,==操作会首先把两个数字转换成相同的相同类型。举例:
1> 1==1.0.
true
2> 1=:=1.0.
false
所以一般推荐用精确等于去比较
比较运算符的大小级别:
number < atom < reference < fun < port < pid < tuple < list < bit string
3> 1 > a.
false
op | Description | Argument type |
+ | number | |
- | number | |
+ | number | |
- | number | |
* | number | |
/ | 浮点数除法,结果是浮点数 | number |
bnot | 一元not运算符 | integer |
div | 整数除法,结果是整数 | integer |
rem | 求玉树 | integer |
band | and运算 | integer |
bor | or运算 | integer |
bxor | xor异或运算 | integer |
bsl | 左移位操作 | integer |
bsr | 右移位操作 | integer |
逻辑运算符
op | Description |
not | 一元逻辑not |
and | 逻辑and |
or | 逻辑or |
xor | 逻辑xor |
原子true 和false表示逻辑的”真”和”假”
此外,逻辑运算符还包括一个orelse 和andalso
原始的or和and是不带”短路运算”操作的,而orelse和andalso是带短路运算操作的。
短路运算举例
Express1 and Express2
Express1 andalso Express2
如果Express1 为假,and会继续判断Express2,然后整体判定为假,而andalso”短路”操作,直接判定整个表达式为假,从效率上来说,andalso会高一些