Swift 中的 `!myValue.isEmpty` 和 `myValue.isEmpty == false` 有啥区别?

Posted

技术标签:

【中文标题】Swift 中的 `!myValue.isEmpty` 和 `myValue.isEmpty == false` 有啥区别?【英文标题】:What is the difference between `!myValue.isEmpty` and `myValue.isEmpty == false` in Swift?Swift 中的 `!myValue.isEmpty` 和 `myValue.isEmpty == false` 有什么区别? 【发布时间】:2020-08-12 23:29:26 【问题描述】:

这些语句之间有什么区别,或者可以根据开发者的喜好使用它们吗?

!myValue.isEmpty

对比

myValue.isEmpty == false

想从编译器的角度了解它们有何不同。

【问题讨论】:

虽然使用“== false”可能更明显,但我会说使用“!”更常见,因为它更紧凑,并且与相反的“value.isEmpty”一致。 “value.isEmpty == true”有点多余/不必要。 【参考方案1】:

! 是逻辑非运算符。

这会反转布尔值:

!value.isEmpty

== 是一个比较运算符。

这会将布尔值与另一个进行比较:

value.isEmpty == false

对于布尔变量,两者都产生相同的结果。


假设value.isEmptyfalse

!value.isEmpty 转换为 !false 转换为 true

value.isEmpty == false 转换为 false == false 转换为 true

【讨论】:

补充一点,== 检查两个值/对象是否相同,而=== 检查两个对象是否共享相同的引用。更多信息here 所以是的,这些在逻辑上是等价的 @pawello2222 性能方面,有什么不同吗? @Chaya 不,它没有。这只是一个偏好问题。你可以看看this thread @Chaya 如果您有可选的Bool,您可能需要使用== false== true,因为在这种情况下您将有第三种可能性== nil

以上是关于Swift 中的 `!myValue.isEmpty` 和 `myValue.isEmpty == false` 有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章

swift: Swift 中的 SnapKit 不起作用

swift中的 isKindofClass

swift Swift中的变量

swift Swift中的数组

swift SWIFT中的变量

swift Swift4中的Codable