Elixir中字符串比较的双等于和三等于的差异

时间:2015-09-02 07:31:52

标签: elixir

我正在读一本关于Elixir的书:Introducing Elixir

在字符串上比较它说:

  

Elixir提供了两种用于比较字符串相等性=====运算符的选项。 ==运算符通常最简单,但另一运算符产生相同的结果。

如果他们的意思相同,那么有两个运营商的目的是什么?

1 个答案:

答案 0 :(得分:22)

浮现的一个例子是浮点数 - 它使用与字符串相同的比较函数:

iex> 1 == 1    #true
iex> 1 == 1.0  #true
iex> 1 === 1   #true
iex> 1 === 1.0 #false

对于!==

iex> 1 != 2    #true
iex> 1 != 1.0  #false
iex> 1 !== 2   #true
iex> 1 !== 1.0 #true

值得注意的是,这些函数使用以下Erlang表达式:

Elixir | Erlang
==     | ==
===    | =:=
!=     | /=
!==    | =/=

来自Erlang documentation

  

将整数与float进行比较时,精度较低的术语将转换为另一个术语的类型,除非运算符是=:=或= / =之一。浮点数比整数更精确,直到浮点数的所有有效数字都在小数点的左边。当浮点数大于/小于+/- 9007199254740992.0时会发生这种情况。转换策略会根据浮点数的大小而改变,因为否则大浮点数和整数的比较会失去它们的传递性。