在Swift中同时检查nil并清空一组是否安全?

时间:2015-10-24 13:39:14

标签: ios swift null

我只想检查一个集合是空还是零,所以我想知道下面的代码是否安全。 (如果newValue为nil并且系统运行(newValue!),那么它是否可行。计数并导致错误?)

if newValue == nil ||  (newValue!).count == 0{
    // Actions here        
}

3 个答案:

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

布尔语句只有在语句可能仍然导致truefalse时才会执行 - 一旦确定结果就完成了。

对于&&,这意味着如果一个语句false,则执行停止 对于||,这意味着如果一个语句是true,则执行停止。