Swift IF语句错误?

时间:2017-02-02 17:53:51

标签: swift

下面的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不会评估条件表达式的第二部分。分开声明的另一部分?

对我来说这看起来像个错误。

1 个答案:

答案 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:

  1. 第一个条件,假设self.tripOver false ,其他条件为 true

    if true || true && false => false   // doesn't execute statement
    

    if true && false => false      // doesn't execute statement
    
  2. 第二个条件,与上述假设相同:

    if true || true || false => true    // executes statement
    
  3. P.S。:请不要把责任归咎于编译器