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.isEmpty
是false
:
!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` 有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章