我正在读一本关于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时会发生这种情况.转换策略根据浮点数的大小而改变,因为否则大浮点数和整数的比较将失去其传递性.