【发布时间】:2015-10-24 13:39:13
【问题描述】:
我只是想检查一个集合是空还是nil,所以我想知道下面的代码是否安全。 (如果 newValue 为 nil 并且系统运行 (newValue!).count 并导致错误是否可以通过?)
if newValue == nil || (newValue!).count == 0{
// Actions here
}
【问题讨论】:
-
是的,因为短路是安全的。这是关于数组的类似问题:stackoverflow.com/q/27588964/1630618
-
@vacawama 谢谢!我想知道是否所有语言都遵守这种规则,因为我知道它在 Java 中是安全的。
-
如有疑问,请阅读Swift documentation:“与上面的逻辑与运算符一样,逻辑或运算符使用短路求值来考虑其表达式。如果逻辑运算符的左侧OR 表达式为真,不计算右侧,因为它不能改变整个表达式的结果。”
-
我不会一概而论是否所有人都有这种可能性。 Objective-C 有,Swift 也不确定其他的
-
如果您发现自己经常这样做,那么您可能使用了 Optional Set,而您应该只使用 Set。如果 nil 和 empty 相同,则根本不需要 Optional。 (如果您确实需要这种模式,那么@DepartamentoB 的答案是理想的。)