下面的if语句不会捕获loc!.speed< 1.0。为什么呢?
if loc == nil || loc!.speed < 1.0, self.tripOver
{
return
}
但是下面的if语句可以使用
if loc == nil || loc!.speed < 1.0 || self.tripOver
{
return
}
以上if语句 捕获loc!.speed&lt; 1.0并正确返回。
为什么当有一个&#39;时,swift不会评估条件表达式的第二部分。分开声明的另一部分?
对我来说这看起来像个错误。
答案 0 :(得分:4)
这两个陈述不一样。第一个:
if loc == nil || loc!.speed < 1.0, self.tripOver{...}
可以替换为:
if ((loc == nil || loc!.speed < 1.0) && self.tripOver){...}
因此,如果self.tripOver
false ,则第一个条件为false,因此该语句不会执行。但在第二种情况下,即使self.tripOver
false ,如果其他条件导致 true ,则语句也会执行。
<强> LOGIC:强>
第一个条件,假设self.tripOver
false ,其他条件为 true :
if true || true && false => false // doesn't execute statement
或强>
if true && false => false // doesn't execute statement
第二个条件,与上述假设相同:
if true || true || false => true // executes statement
P.S。:请不要把责任归咎于编译器