首页 > 解决方案 > Elixir 中 == 和 === 有什么区别?

问题描述

我从 Elixir 开始。我读到 Elixir 具有弱相等==和严格相等===运算符。

来自 JavaScript 背景,==感觉像是一个很大的错误。Elixir 有什么不同吗?错过了什么吗?Elixir 什么时候应该分别使用弱运算符和强运算符?

到目前为止,我知道,在 JavaScript中会"1" == 1产生true,而在 Elixir 中会产生false. 这意味着至少保留了类型信息。如果是这样,那么弱平等有什么用呢?

标签: elixir

解决方案


根据官方文档

==和之间的区别在于===后者在比较整数和浮点数时更加严格:

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

否则它们几乎相同:

→ iex
Erlang/OTP 21 [erts-10.0] [source] [64-bit] [smp:4:4] [ds:4:4:10] [async-threads:1] [hipe]

Interactive Elixir (1.6.6) - press Ctrl+C to exit (type h() ENTER for help)
iex(1)> "bro" == "bro"
true
iex(2)> "bro" ===  "bro"
true
iex(3)> 1 == 1
true
iex(4)> 1.0 == 1.0
true
iex(5)> 1 == 1.0
true
iex(6)> 1 === 1.0
false

推荐阅读