elixir - Elixir 中 == 和 === 有什么区别?
问题描述
我从 Elixir 开始。我读到 Elixir 具有弱相等==
和严格相等===
运算符。
来自 JavaScript 背景,==
感觉像是一个很大的错误。Elixir 有什么不同吗?错过了什么吗?Elixir 什么时候应该分别使用弱运算符和强运算符?
到目前为止,我知道,在 JavaScript中会"1" == 1
产生true
,而在 Elixir 中会产生false
. 这意味着至少保留了类型信息。如果是这样,那么弱平等有什么用呢?
解决方案
根据官方文档:
==
和之间的区别在于===
后者在比较整数和浮点数时更加严格: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
推荐阅读
- python-3.x - 无法使用 python boto3 模块连接到 nexrad aws s3 存储桶
- laravel - Laravel:使用 slug 代替 id 的优缺点
- mongodb - 启动 KeystoneJS 应用程序时出现 GraphQL 错误
- c# - C# Excel COM 插件程序集绑定重定向?
- r - ggplot:如何将组平均值作为一条线添加到R中的分组条形图中?
- java - 如果在开始时单击按钮,但如果在 Seekbar 移动后单击,则应用程序崩溃崩溃
- c# - 为什么不能在 ajax 中使用 beginform?
- reactjs - Axios 请求未在 componentDidMount 上触发
- reactjs - Gatsby 构建在页面重新加载后不采用反应引导大小前缀
- python - 用于在 Python 字典中搜索给定值的键的现成函数