我认为Swift是一种构造得很好的现代语言,然而,有一件事让我感到困惑,那就是(nil <= 0)== true 的理由(nil&lt; 0)== true。
以下是更多案例:
无论如何,返回true为nil&lt; 0似乎违背了整个可选概念,其中一个论点是关于避免默认数字初始化为&#34; 0&#34;。现在&#34; 0&#34;再次特别。
任何人都有任何解释,Swift决定让(nil&lt; = 0)和(nil&lt; 0)返回true。
答案 0 :(得分:15)
可选项具有可比性,因此可以对它们进行排序。规则很简单:
因此,nil等于nil,nil小于任何非零可选项。
它与您指定的值0无关。分配-1000或+100,或任何你喜欢的,你得到相同的结果。
答案 1 :(得分:3)
当比较两个选项时,当一个是nil而另一个是一些值时,值总是“更大”,因为没有任何东西。
所以
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
如果其中一个为零,则不会查看基础值,它只是说:某些值大于无值和没有值等于没有值强>