有人知道 Swift 中“(nil < 0) == true”和“(nil <= 0) == true”背后的基本原理吗?

Does anybody know the rationale behind "(nil < 0) == true" and "(nil <= 0) == true" in Swift?

我认为 Swift 是一种构造得很好的现代语言,但是,有一件事让我感到困惑,那就是 (nil <= 0) = 的基本原理= true and (nil < 0) == true.

这里还有更多案例:

无论如何,return true for nil < 0 似乎违背了整个可选概念,其中一个论点是关于避免将默认数字初始化为“0”。现在“0”又是特殊的。

任何人都有任何解释 Swift 决定 (nil <= 0) 和 (nil < 0) return 为真。

可选项具有可比性,因此可以对它们进行排序,例如。规则很简单:

  1. 任意两个为 nil 的可选值比较相等。
  2. 如果一个可选值是nil而另一个不是,nil小于non-nil。
  3. 如果两个可选值都不为零,则比较展开的值。

因此,nil 等于 nil,并且 nil 小于任何非 nil 可选值。

这与您分配的值0无关。分配 -1000 或 +100 或任何你喜欢的值,你会得到相同的结果。

当比较两个可选值时,一个为 nil,另一个为某个值,该值始终为 'bigger',因为什么都没有。

所以

nil < 0 = true     Because 0 is some value but nil isn't
nil == 0 = false    Makes sense because 0 isn't nil
nil <= 0 = true    Same as before

0也可以换成任意值,结果一样。实际上函数

func < <T>(lhs: T?, rhs: T?) -> Bool

如果其中一个为零,甚至不查看基础值,它只是说:一些值大于没有值没有值等于没有值