Swift 是"&&&引用;及&引用;斯威夫特也一样吗?

Swift 是"&&&引用;及&引用;斯威夫特也一样吗?,swift,Swift,正如标题所说,我刚刚遇到一个例子,如果&&(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 {

正如标题所说,我刚刚遇到一个例子,如果
&&
(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")
}
设a=5
设b=6
如果a0{
打印(“应为真”)
}
如果a0{
打印(“应为假”)
}

如果a>6,b它们可以在类似的情况下使用,但这并不意味着它们完全相同

考虑:

if (a && b) || c
你不能写字

if (a, b) || c
甚至
a&b|c
也不同于
a,b|c

如果a,b

if a {
   if b {
      ...
   }
}
两个表达式都必须计算为
true
,但它们仍然是两个独立的表达式。我们不应该想象那里有
&&

为什么我们需要
操作符

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

if let a = a, a.isValid() {

因为在这种情况下,&&
对我们没有帮助。

它们的不同之处在于逗号的优先级尽可能低。i、 e在检查逗号之前,将执行所有其他操作

// (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")
}

这对于
if
语句似乎是正确的,但是您不能编写类似
return(a>4,b<4)
的代码,因此这两个语句并不完全相同。实际上,它的行为类似于
guard
之后的条件列表,
if let
guard let
要添加,如果这确实是您想要的,我会使用
&
来明确说明问题。如果您使用
替换
&&
,人们可能会感到困惑,重复理解,或者将其误认为是打字错误/错误,即使代码是正确的/可以理解的。此外,为了清晰起见,您可以在使用时为每个测试添加一行新代码。这使人们能够对您的代码进行红显,以了解这些是不同的测试。我看到的最常用的用法是测试选项,如{if let a=someoptional,a.oneproperty==somevalue{}}。这是一个很好的信息,但我认为最好用括号重新组合的方式说明逗号与
&
相同。i、 e.
true | | false,false
(true | | false)&false