Swift中的"&&"和","是一样的吗?

Wil*_* Hu 11 swift

正如标题所说,我刚遇到一个if &&(AND)并,在Swift中给出相同结果的情况.我测试了下面的代码:

let a = 5
let b = 6

if a<6, b>0 {
    print("should be true")
}

if a<6, b<0 {
    print("should be false")
}

if a>6, b>0 {
    print("should be false")
}

if a>6, b<0 {
    print("should be false")
}
Run Code Online (Sandbox Code Playgroud)

它只记录:

应该是真的

所以,行为,就像是&&,我是否正确?

Sul*_*han 16

它们可以在类似的情况下使用,但这并不意味着它们完全相同.

考虑:

if (a && b) || c
Run Code Online (Sandbox Code Playgroud)

你不能写

if (a, b) || c
Run Code Online (Sandbox Code Playgroud)

甚至a && b || c不同于a, b || c.

if a, b 是这样的

if a {
   if b {
      ...
   }
}
Run Code Online (Sandbox Code Playgroud)

必须对两个表达式进行求值,true但它们仍然是两个单独的表达式.我们不应该想象&&那里.

我们为什么需要,运营商?

需要运算符将可选绑定与布尔条件组合,例如

if let a = a, a.isValid() {
Run Code Online (Sandbox Code Playgroud)

因为&&在这种情况下我们不会帮助我们.


Dec*_*nna 6

它们的不同之处在于逗号的优先级可能最低。即,在检查逗号之前,将执行其他所有内容。

// (true || false) && false
if true || false, false {
    print("I will never be executed")
}

// true || (false && false)
if true || false && false {
    print("I am always executed")
}
Run Code Online (Sandbox Code Playgroud)