Ich suchte nach einer Antwort auf das, was |=
in Groovy funktioniert, und obwohl die obigen Antworten richtig sind, haben sie mir nicht geholfen, einen bestimmten Code zu verstehen, den ich mir angesehen habe.
Insbesondere wenn es auf eine boolesche Variable angewendet wird, setzt "| =" sie auf TRUE, wenn sie zum ersten Mal auf einen wahrheitsgemäßen Ausdruck auf der rechten Seite trifft, und hält ihren TRUE-Wert für alle nachfolgenden Aufrufe | =. Wie ein Riegel.
Hier ein vereinfachtes Beispiel dafür:
groovy> boolean result
groovy> //------------
groovy> println result //<-- False by default
groovy> println result |= false
groovy> println result |= true //<-- set to True and latched on to it
groovy> println result |= false
Ausgabe:
false
false
true
true
Edit : Warum ist das nützlich?
Stellen Sie sich eine Situation vor, in der Sie wissen möchten, ob sich an einer Vielzahl von Objekten etwas geändert hat, und benachrichtigen Sie in diesem Fall eine der Änderungen. Sie würden also einen hasChanges
Booleschen Wert einrichten und ihn auf |= diff (a,b)
und dann |= dif(b,c)
usw. setzen. Hier ein kurzes Beispiel:
groovy> boolean hasChanges, a, b, c, d
groovy> diff = {x,y -> x!=y}
groovy> hasChanges |= diff(a,b)
groovy> hasChanges |= diff(b,c)
groovy> hasChanges |= diff(true,false)
groovy> hasChanges |= diff(c,d)
groovy> hasChanges
Result: true
pipe equal operator
zu dieser Frage oder einer anderen Dokumentation zu diesem Thema den Leuten bei der Suche nicht helfen würde.