我只想检查一个集合是空还是零,所以我想知道下面的代码是否安全。 (如果newValue为nil并且系统运行(newValue!),那么它是否可行。计数并导致错误?)
if newValue == nil || (newValue!).count == 0{
// Actions here
}
答案 0 :(得分:3)
它非常安全,因为只有当第一个语句为真时它才会执行第二个语句。
最好使用:
guard let newValue = newValue // First unwrap it
where newValue.count > 0 else { // Then check if the unwrapped value has items
return // If not we don't continue
}
// From this point you don't need to use ? or ! to access newValue anymore
始终尝试在Swift代码中使用安全模式。给我铸造!是一种代码气味,我总是试图用替换它,如果让东西=东西或警卫让东西=东西陈述
答案 1 :(得分:1)
在这种情况下,它是安全的。因为第一部分使整个陈述成立,所以不需要评估第二部分。
如果可以在其部分之后确定整个条件的结果,则不评估休息。这是条件不应该有任何副作用(突变任何东西)的原因之一
更为一般reading
答案 2 :(得分:1)
这句话非常好并且保存。
这种编程语言行为的正确术语是short-circuit evaluation
。
布尔语句只有在语句可能仍然导致true
和false
时才会执行 - 一旦确定结果就完成了。
对于&&
,这意味着如果一个语句false
,则执行停止
对于||
,这意味着如果一个语句是true
,则执行停止。