首页 > 代码库 > 简单谈谈Erlang的几种运算符

简单谈谈Erlang的几种运算符

Erlang 有好几种运算符,比较运算符、数学运算符、布尔运算符,文章针对这几种运算符做讨论,参考erlang文档,以例子说明。

Erlang的比较运算符
写法如下:
Expr1 op Expr2
1> 1 == 1.
true
opDescription
==等于
/=不等于
=<小于或等于
<小于
>=大于或等于
>大于
=:=恒等于
=/=恒不等于
以=:=和==为例,说明恒等于和等于的区别:
2> 1 == 1.0.
true
3> 1 =:= 1.0.
false
不同类型比较会有什么结果?
针对不同数据类型比较,如下:
number < atom < reference < fun < port < pid < tuple < list < bit string
就是说,[] > 0结果是true

Erlang的数学运算符
有两种写法,如下:
op Expr
Expr1 op Expr2
4> + 1.
1
5> 1 + 1.
2
opDescriptionArgument type
+一元 +number
-一元 -number
+加法number
-
减法
number
*
乘法
number
/浮点除法number
div
整数除法
integer
bnot一元 not 位运算integer
rem整数求余integer
band与运算integer
bor或运算integer
bxor异或运算integer
bsl左移运算integer
bsr右移运算integer

例子如下:

6> +1.
1
7> -1.
-1
8> 1+1.
2
9> 4/2.
2.0
10> 5 div 2.
2
11> 5 rem 2.
1
12> 2#10 band 2#01.
0
13> 2#10 bor 2#01.
3
14> 8 bsr 1.
4
15> 8 bsl 1.
16

Erlang的布尔运算符
写法如下:
op Expr
Expr1 op Expr2
opDescription
not一元逻辑非
and逻辑与
or逻辑或
xor逻辑异或
例子:
16> not true.
false
17> true and false.
false
18> true xor false.
true
另外,还有两个布尔运算符 orelse 和 andalso,这两个用于短路运算,写法如下:
Expr1 orelse Expr2
Expr1 andalso Expr2

什么是短路运算?

例子:

Expr1 and Expr2

Expr1 andalso Expr2

对于and运算,如果Expr1为假,还会继续执行Expr2,然后再判定表达式为假;而andalso运算,当Expr1为假就判定表达式为假,不再执行Expr2,所以这里andalso效率比较高。



参考:
http://blog.csdn.net/mycwq/article/details/37813635
http://www.erlang.org/doc/reference_manual/expressions.html