为什么非布尔值不在布尔表达式中隐式转换?

Why are non-boolean values not implicitly converted in boolean expressions?

一些编程语言评估

5 == true

为真,或允许

if 5 then expr

通过将 5 转换为布尔值。

茱莉亚没有。为什么?

因为它们不一样。

更详细。
数字和真值(布尔值)的概念是不同的。这两个东西之间没有概念映射。当计算机创建映射时,它会为每个布尔状态赋予一个 任意 数字符号。数学中没有任何内容可以说明令牌 FALSE 应该映射到什么数字。一个相当合理的映射是:

  1. 错误
  2. 正确
  3. 找不到文件

有一个常见的 computing 约定,即 FALSE 应映射到零,而 TRUE 应映射到一...或负一...或其他……或其他一切。但这不是硬性规定,没有数学基础。

这不仅限于 Julia。

因为 == 是一个 equivalence relation.

在 Julia 中,true 转换为整数时变为 1,因此 1 == true。如果 true == 5,那么为了 == 保持传递性,这意味着 1 == 5