默认情况下,与nil/null不同的可选值不能与数值进行比较。必须采取哪些步骤才能使nil < 1
和nil < 1.0
评估为真?
最佳答案
nil == 0
永远不会计算为true,因为它是false。类似地,1 == 0
也不会计算为真,而且没有合理的步骤可以让它这样做。对于==
,不相等的东西不应该返回true。
您需要的语法是(nil ?? 0) == 0
,这是真的。
但是如果你发现自己经常把nil当作0来处理(经常需要一些特殊处理),那么这就说明你的类型是不正确的。为什么这个变量是可选的?听起来这个变量首先应该是一个int。如果它作为可选的(通常是通过json)进入您的系统,那么您应该尽早将它转换为非可选类型,并在系统的其余部分中使用它。swift中的绝大多数变量和属性不应该是可选的。如果他们是(而且许多人犯了这个错误),你会发现你自己在不断地与这个系统抗争。
对于您的编辑,swift过去允许您以这种方式对nil使用<
。它是故意删除的(SE-0121),因为它会导致很多非常细微的错误(就像在c和objc中将null隐式地视为0长期以来导致的错误一样)。你绝对不应该把它放回去。这是一个非常糟糕的语义。
关于swift - 设为Optional.none评估为0,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54633034/