Swift IF语句错误?
下面的if语句不包含loc!。速度<1.0。为什么?Swift IF语句错误?,swift,Swift,下面的if语句不包含loc!。速度
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