Swift 1.2 (Xcode 6.3) usunął operator x^'' dla wartości Bool?

2015-04-10 11 views
14

Ten przykładowy kod na Xcode 6.3 ...Swift 1.2 (Xcode 6.3) usunął operator x^'' dla wartości Bool?

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

wyświetla następujący błąd.

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

Nie mogę znaleźć specyfikacji w dokumentacji Apple. Czy ta specyfikacja (i muszę ją zgrupować)?

+1

nie mogę go znaleźć w http://swiftdoc.org/ ani w plikach nagłówkowych, więc pewnie tak. –

+1

Komunikat o błędzie zawiera opis sposobu rozwiązania problemu. – gnasher729

+0

Tak. Wiem to. Obecnie link do uwag do wydania jest martwym linkiem, więc chciałem się dowiedzieć, czy jest to zmiana specyfikacji. –

Odpowiedz

10

To wyraźnie zamierzone:

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

pokazuje:

@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 
22

Zakładając, że próbujesz użyć logicznego XOR, != powinien służyć twojemu celowi. ^ jest bitowym XOR. Ma więc sens, że Apple usunął go dla wartości bool.

+0

W jaki sposób stosujesz XOR do trzech równoczesnych? – jowie

+5

@jowie xor nie ma definicji więcej niż dwóch elementów w tym samym czasie, jak byś się spodziewał, że zadziała? – Daniel

+3

@jowie (a! = B)! = C powinno to zrobić. –

Powiązane problemy