【问题标题】:Difference between double equals and triple equals for String Comparison in ElixirElixir中字符串比较的双等号和三等号之间的区别
【发布时间】:2019-06-30 00:47:30
【问题描述】:

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

在字符串比较时它说:

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

如果两个运算符的含义相同,那么它们的目的是什么?

【问题讨论】:

    标签: elixir


    【解决方案1】:

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

    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

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

    【讨论】:

    • 是的,===== 只影响数字之间的比较。
    猜你喜欢
    • 2011-12-24
    • 1970-01-01
    • 1970-01-01
    • 2021-09-01
    • 2023-04-09
    • 2012-08-05
    相关资源
    最近更新 更多