2015-04-10 4 views
14

Questo codice di esempio su Xcode 6.3 ...Swift 1.2 (Xcode 6.3) ha rimosso l'operatore xo '^' per il valore Bool?

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

visualizza il seguente errore.

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

Non riesco a trovare le specifiche nella documentazione Apple. Questa specifica (e dovrò ridurla)?

+1

non riesco a trovare in http://swiftdoc.org/ né nei file di intestazione, quindi probabilmente si. –

+1

Il messaggio di errore spiegava come risolvere il problema. – gnasher729

+0

Sì. Lo so. Attualmente il link delle note di rilascio è un link morto, quindi volevo sapere se si tratta di un cambiamento di specifica. –

risposta

10

E 'chiaramente intenzionale:

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

spettacoli:

@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

Supponendo che si stia tentando di utilizzare uno XOR logico, uno != dovrebbe servire al proprio scopo. Lo ^ è un XOR bit a bit. Quindi ha senso che Apple lo abbia rimosso per i valori bool.

+0

Quindi, come si applica XOR a tre booleani contemporaneamente? – jowie

+5

@jowie xor non ha una definizione per più di due elementi allo stesso tempo, come ti aspetteresti che funzioni? – Daniel

+3

@jowie (a! = B)! = C dovrebbe farlo. –