【问题标题】:Swift 1.2 (Xcode 6.3) removed xor '^' operator for Bool value?Swift 1.2 (Xcode 6.3) 删除了 Bool 值的 xor '^' 运算符?
【发布时间】:2015-06-15 19:50:10
【问题描述】:

Xcode 6.3 上的示例代码 ...

var str1 = ""
var str2 = ""
if str1.isEmpty ^ str2.isEmpty {
  // do something.
}

显示以下错误。

'^' is unavailable: use the '!=' operator instead

我在 Apple 文档中找不到该规范。 是这个规范吗(我不得不把它混为一谈)?

【问题讨论】:

  • 我在swiftdoc.org 的头文件中都找不到它,所以可能是的。
  • 错误信息告诉你如何解决问题。
  • 是的。我知道。目前发行说明的链接是死链接,所以我想知道它是否是规范的变化。
  • IMO Swift 应该有一个 "^^" 运算符,因为 "!=" 不是那么直观。阅读:“一个但不是另一个”与“不等于”。 "!=" 有效,但它更晦涩。

标签: ios xcode swift xcode6.3


【解决方案1】:

假设您尝试使用逻辑 XOR,!= 应该可以满足您的目的。 ^ 是按位异或。因此,Apple 将其删除为 bool 值是有道理的。

【讨论】:

  • 那么如何同时对三个布尔值应用异或呢?
  • @jowie xor 没有同时定义两个以上的元素,您希望它如何工作?
  • @jowie (a != b) != c 应该这样做。
  • @jowie XOR 是关联的。 (a ⊕ b) ⊕ c = a ⊕ (b ⊕ c),所以你可以选择其中一个
【解决方案2】:

这显然是故意的:

$ echo ':print_module Swift' | swift -deprecated-integrated-repl | fgrep "use the '!=' operator instead"

显示:

@availability(*, unavailable, message="use the '!=' operator instead") func ^=(inout lhs: Bool, rhs: Bool)
@availability(*, unavailable, message="use the '!=' operator instead") func ^(lhs: Bool, rhs: Bool) -> Bool

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-20
    • 2012-09-12
    • 1970-01-01
    • 2020-04-09
    相关资源
    最近更新 更多