2016-07-26 7 views
2

Ich habe einen Fehler beim Ausführen einer bitweisen Operation für zwei boolesche Werte erhalten. Fehler: | help meiOS: Binärer Operator '| =' kann nicht auf zwei 'Bool'-Operanden angewendet werden

func checkAvailability(available:Bool) -> Bool{ 
    var bChanged = false 
    bChanged |= available //"Binary operator '|=' cannot be applied to two 'Bool' operands" 
    return bChanged 
} 

Bitte jemand das Problem ...

zu lösen "Binary Operator '=' zwei 'Bool' Operanden werden nicht angewendet"
+0

'| =' welcher Operator ist das ???? –

+0

Zeigen Sie uns, wie dieser Operator definiert ist (er ist nicht in Swift, also müssen Sie ihn irgendwo definiert haben, oder er stammt aus einer Bibliothek eines Drittanbieters). – Moritz

+0

Bitweise ODER '|' –

Antwort

5

Sie es selbst definieren könnte durch den Bediener zu überlasten:

Swift 2:

func |= (inout left: Bool, right: Bool) { 
    left = left || right 
} 

Swift 3:

func |= (left: inout Bool, right: Bool) { 
    left = left || right 
} 
+0

Vielen Dank für eine konstruktive Antwort - im Gegensatz zu einigen der Kommentare zur OP-Frage. Nur um konsistent zu sein, habe ich Ihre Idee erweitert, um die anderen beiden fehlenden Operatoren abzudecken. – RenniePet

3

Dies ist eine einfache Erweiterung von Lews Antwort, um die anderen zwei "fehlenden" Operatoren einzuschließen.

// A couple of operators that exist in C# and Java but are missing from Swift. 

public func |= (leftSide : inout Bool, rightSide : Bool) { 
    leftSide = leftSide || rightSide 
} 

public func &= (leftSide : inout Bool, rightSide : Bool) { 
    leftSide = leftSide && rightSide 
} 

public func ^= (leftSide : inout Bool, rightSide : Bool) { 
    leftSide = leftSide != rightSide 
}