首页 > Erlang并发教程 > 3.20 Erlang并发编程-项式比较
2013
11-05

3.20 Erlang并发编程-项式比较

BACK TOP文章索引

  1. 项式比较
  2. 共0条评论

项式比较

可以出现在保护式中的项式比较运算符如下:

运算符 描述 类型
X > Y X大于Y coerce
X < Y X小于Y coerce
X =< Y X小于或等于Y coerce
X >= Y X大于或等于Y coerce
X == Y X等于Y coerce
X /= Y X不等于Y coerce
X =:= Y X等于Y exact
X =/= Y X不等于Y exact

比较运算符工作机制如下:首先对运算符两边求值(如,在表达式两边存在算术表达式或包含BIF保护式函数时);然后再进行比较。

为了进行比较,定义如下的偏序关系:

number &lt; atom &lt; reference &lt; port &lt; pid &lt; tuple &lt; list

元组首先按大小排序,然后再按元素排序。列表的比较顺序是先头部,后尾部。

如果比较运算符的两个参数都是数值类型且运算符为coerce型,则如果一个参数是integer另一个是float,那么integer将被转换为float再进行比较。

exact类型的运算符则不做这样的转换。

因此5.0 == 1 + 4为真,而5.0 =:= 4 + 1为假。

保护函数子句示例:

foo(X, Y, Z) when integer(X), integer(Y), integer(Z), X == Y + Z -&gt;
foo(X, Y, Z) when list(X), hd(X) == {Y, length(Z)}  -&gt;
foo(X, Y, Z) when {X, Y, size(Z)} == {a, 12, X} -&gt;
foo(X) when list(X), hd(X) == c1, hd(tl(X)) == c2 -&gt;

注意在保护式中不可引入新的变量。


留下一个回复

你的email不会被公开。