Erlang的比較運算符
opDescription==等於/=不等於=<小於等於<小於>=大於等於>大於=:=精確的等於=/=精確的不等於等於和精確等於的區別:
如果要比較兩個數,如果兩個數之間是不同的類型,比如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
opDescriptionArgument type+
number-
number+
number-
number*
number/浮點數除法,結果是浮點數numberbnot一元not運算符integerdiv整數除法,結果是整數integerrem求玉樹integerbandand運算integerboror運算integerbxorxor異或運算integerbsl左移位操作integerbsr右移位操作integer
邏輯運算符
opDescriptionnot一元邏輯notand邏輯andor邏輯orxor邏輯xor原子true 和false表示邏輯的”真”和”假”
此外,邏輯運算符還包括一個orelse 和andalso
原始的or和and是不帶”短路運算”操作的,而orelse和andalso是帶短路運算操作的。
短路運算舉例
Express1 and Express2
Express1 andalso Express2
如果Express1 為假,and會繼續判斷Express2,然後整體判定為假,而andalso”短路”操作,直接判定整個表達式為假,從效率上來說,andalso會高一些
復制代碼 代碼如下:
op Description
== 等於
/= 不等於
=< 小於等於
< 小於
>= 大於等於
> 大於
=:= 精確的等於
=/= 精確的不等於
Examples
復制代碼 代碼如下:
> 1==1.0.
true
> 1=:=1.0.
false
> 1 > a.
false
注: 一般語言的 小於等於 是"<=" 而erlang的 "=<" 這樣寫