gpt4 book ai didi

swift - 为什么 if 语句会这样?

转载 作者:行者123 更新时间:2023-11-28 13:17:14 24 4
gpt4 key购买 nike

假设我有一个 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 调用中使用它。这不是您问题的直接答案,但首先在条件绑定(bind)中展开 Swift 可选处理实践要好得多:

if let arr = self.myObjectArray {
if contains(arr, myObject) {
// ...
}
}

结果更清晰。就个人而言,我也喜欢由此产生的嵌套;在 Swift 1.2 中,甚至可能有解决嵌套的方法,但我不认为这是需要避免的事情。

此外,回到您最初的问题,在条件下将 Bool 与 truefalse 进行比较是愚蠢的(也许不是完全可预测的?)。条件是已经评估 Bool 的真值;这就是条件

关于swift - 为什么 if 语句会这样?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28553798/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com