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

cod*_*hal 26 elixir

我正在读一本关于Elixir的书:介绍Elixir.

在字符串比较它说:

Elixir提供了两种比较字符串相等性=====运算符的选项.该==操作通常是最简单的,虽然其他产生相同的结果.

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

Gaz*_*ler 26

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

iex> 1 == 1    #true
iex> 1 == 1.0  #true
iex> 1 === 1   #true
iex> 1 === 1.0 #false
Run Code Online (Sandbox Code Playgroud)

并为!==

iex> 1 != 2    #true
iex> 1 != 1.0  #false
iex> 1 !== 2   #true
iex> 1 !== 1.0 #true
Run Code Online (Sandbox Code Playgroud)

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

Elixir | Erlang
==     | ==
===    | =:=
!=     | /=
!==    | =/=
Run Code Online (Sandbox Code Playgroud)

Erlang文档:

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

  • 是的,`==`和`==='只影响数字之间的比较. (22认同)