Swift IF语句错误?

Swift IF语句错误?,swift,Swift,下面的if语句不包含loc!。速度

下面的if语句不包含loc!。速度<1.0。为什么?

if loc == nil || loc!.speed < 1.0, self.tripOver 
{
    return
}
如果loc==nil | | loc!。速度<1.0,自复飞
{
返回
}
然而,下面的if语句是有效的

if loc == nil || loc!.speed < 1.0 || self.tripOver 
{     
    return
}
如果loc==nil | | loc!。速度<1.0 | |自翻
{     
返回
}
上面的if语句不捕捉loc!。速度<1.0并正确返回

当语句的另一部分之间有“,”分隔时,为什么swift不计算条件表达式的第二部分


对我来说这看起来像个虫子

这两种说法不一样。第一个:

if loc == nil || loc!.speed < 1.0, self.tripOver{...} 

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

    if true || true || false => true    // executes statement
    


  • p.S.:请不要把责任推到编译器身上

    这些语句是不等价的–如果loc==nil | | loc!。speed<1.0,self.tripOver{…}是
    if(loc==nil | | loc!。speed<1.0)&&self.tripOver{…}
    这是一个bug。你的错误。考虑到第二个代码片段确实是你所追求的逻辑,另一种选择是,将
    loc
    为非
    nil
    的条件与
    loc
    :s成员
    speed
    if loc.map({$0.speed<1.0 | self.tripOver})上的谓词结合起来??true{return}
    。或者,使用可选绑定并切换到早期
    返回
    (翻转逻辑)的
    保护让nonOptLoc=loc,nonOptLoc.speed>=1的
    保护
    子句!self.trippover else{return}
    。可能在swift手册中,它应该记录在“If语句”下。但这并不是感谢那些令人讨厌的回答。
    if true && false => false      // doesn't execute statement
    
    if true || true || false => true    // executes statement