【问题标题】:bitwise NOT operator ( ~ ) not work for boolean in SWIFT 1.2按位 NOT 运算符 ( ~ ) 在 SWIFT 1.2 中不适用于布尔值
【发布时间】:2015-09-24 07:09:26
【问题描述】:

我从 swift 1.0 迁移到 swift 1.2,我注意到按位 NOT 运算符 ( ~ ) 在这个简单的示例中不再起作用:

   var open : Bool = false
   open = ~open

'~' 不可用,使用 '!'改为运算符

这是一种新的方式吗?任何帮助将不胜感激

【问题讨论】:

  • 对于布尔值,它等于感叹号,改用它,更有意义(你必须这样做,因为那是 Swift 2)
  • @Kametrixom 很奇怪,它不能为布尔值反转位,但您的解决方案可以工作,谢谢。
  • 我认为这是因为布尔值不必表示为 1 或 0。它被抽象出来了,因此布尔值可以是真/假、开/关等任何一种。只代表两个状态。这就是为什么我认为他们删除了 ~,因为反转位没有意义,因为布尔值不代表位

标签: ios swift


【解决方案1】:

出于某种原因,Swift 曾经支持 Bool 类型的位运算符。

在像 Swift 这样的高级语言中,它的 Bool 数据类型只能是“真”或“假”之一,你不应该使用像 ~ (NOT)、| 这样的位运算符。 (OR) 和 & (AND)。使用条件运算符! (非),|| (OR) 和 && (AND)。

相关:What is the difference between logical and conditional AND, OR in C#?

这是一种不同的语言,但幸运的是,这些运算符的实现在大多数具有类 C 语法的语言中几乎是相同的。

【讨论】:

    猜你喜欢
    • 2011-04-11
    • 2015-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-16
    • 2010-09-06
    • 2014-07-06
    相关资源
    最近更新 更多