为什么 if 语句会这样?
Why does the if statement act like this?
假设我有一个 MyObject 数组,其中仅包含一个 MyObject,它不同于在 contains 函数中作为参数传递的对象。
我想明白为什么,当我这样写我的代码时,它是有效的,我没有去行 myObject.toAdd = true
if self.myObjectArray != nil && contains(self.myObjectArray!, myObject) == true {
myObject.toAdd = true
}
但是当我不写 == true
时它直接进入我的 if 语句而它不应该(从我的角度和我想做的至少...)
if self.myObjectArray != nil && contains(self.myObjectArray!, myObject) {
myObject.toAdd = true
}
有什么区别?
感谢您的帮助
if self.myObjectArray != nil && contains(self.myObjectArray!, myObject) == true {
myObject.toAdd = true
}
我明白了,您的目标是解开 Optional self.myObjectArray
的包装并仅在安全的情况下在 contains
调用中使用它。这不是您问题的直接答案,但更好Swift 可选处理实践先在条件绑定中解包:
if let arr = self.myObjectArray {
if contains(arr, myObject) {
// ...
}
}
结果更清楚了。就个人而言,我也喜欢由此产生的嵌套;在 Swift 1.2 中,甚至可能有解决嵌套的方法,但我不认为这是要避免的事情。
此外,回到您最初的问题,在条件中将 Bool 与 true
或 false
进行比较是愚蠢的(也许不是完全可以预测的?)。条件是 already 评估 Bool 的真值;这就是条件 是 .
假设我有一个 MyObject 数组,其中仅包含一个 MyObject,它不同于在 contains 函数中作为参数传递的对象。
我想明白为什么,当我这样写我的代码时,它是有效的,我没有去行 myObject.toAdd = true
if self.myObjectArray != nil && contains(self.myObjectArray!, myObject) == true {
myObject.toAdd = true
}
但是当我不写 == true
时它直接进入我的 if 语句而它不应该(从我的角度和我想做的至少...)
if self.myObjectArray != nil && contains(self.myObjectArray!, myObject) {
myObject.toAdd = true
}
有什么区别?
感谢您的帮助
if self.myObjectArray != nil && contains(self.myObjectArray!, myObject) == true {
myObject.toAdd = true
}
我明白了,您的目标是解开 Optional self.myObjectArray
的包装并仅在安全的情况下在 contains
调用中使用它。这不是您问题的直接答案,但更好Swift 可选处理实践先在条件绑定中解包:
if let arr = self.myObjectArray {
if contains(arr, myObject) {
// ...
}
}
结果更清楚了。就个人而言,我也喜欢由此产生的嵌套;在 Swift 1.2 中,甚至可能有解决嵌套的方法,但我不认为这是要避免的事情。
此外,回到您最初的问题,在条件中将 Bool 与 true
或 false
进行比较是愚蠢的(也许不是完全可以预测的?)。条件是 already 评估 Bool 的真值;这就是条件 是 .