【发布时间】:2015-07-16 17:04:10
【问题描述】:
我认为 Swift 是一种构建良好的现代语言,但是,有一件事让我感到困惑,那就是具有 (nil 和 (nil
这里有更多案例:
无论如何,为 nil
任何人都有任何解释 Swift 决定让 (nil
【问题讨论】:
-
我不认为这与 0 有任何关系。输入任意数字, (nil
我认为 Swift 是一种构建良好的现代语言,但是,有一件事让我感到困惑,那就是具有 (nil 和 (nil
这里有更多案例:
无论如何,为 nil
任何人都有任何解释 Swift 决定让 (nil
【问题讨论】:
Optional 具有可比性,因此例如可以对其进行排序。规则很简单:
因此,nil 等于 nil,并且 nil 小于任何非 nil 可选值。
它与您分配的值 0 无关。分配 -1000 或 +100 或任何你喜欢的,你会得到相同的结果。
【讨论】:
let isZoomed = (view as? MetalView)?.cameraPosition.z ?? 0.0 < 0.0。接近可读性的极限。
nil == nil 在 Playgrounds 和 .swift 程序中生成语法错误。这是 Xcode 7.3.1。
instance?.value > 0 和instance?.value < 0 等条件表达式时遇到了这个问题。如果 instance 为 nil,则 (instance?.value < 0) == true 但 (instance?.value > 0) == false 和 (instance?.value == 0) == false 在我看来真的很奇怪。
当比较两个可选值时,一个为 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
如果其中一个为 nil,甚至不查看基础价值,它只是说:Some value is greater than no value 并且 No value 等于 no value强>
【讨论】: