Вопрос: Swift 1.2 (Xcode 6.3) удалил оператор xor '^' для значения Bool?


Этот пример кода на Xcode 6.3 ...

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

отображается следующая ошибка.

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

Я не могу найти спецификацию в документации Apple. Является ли это спецификацией (и мне придется ее комментировать)?


14


источник


Ответы:


Это явно преднамеренно:

$ 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

11



Предполагая, что вы пытаетесь использовать логический XOR, != должен служить вашей цели. ^ является побитовым XOR. Поэтому имеет смысл, что Apple удалил его для значений bool.


24