Estaba buscando una respuesta sobre lo que |=
hace en Groovy y, aunque las respuestas anteriores son correctas, no me ayudaron a comprender un código particular que estaba viendo.
En particular, cuando se aplica a una variable booleana "| =" lo establecerá en VERDADERO la primera vez que encuentre una expresión veraz en el lado derecho y MANTENERÁ su valor VERDADERO para todas las llamadas subsiguientes | =. Como un pestillo.
Aquí un ejemplo simplificado de esto:
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
Salida:
false
false
true
true
Editar : ¿Por qué es útil?
Considere una situación en la que desea saber si algo ha cambiado en una variedad de objetos y, de ser así, notifique a alguno de los cambios. Entonces, configuraría un hasChanges
booleano y lo configurará en |= diff (a,b)
y luego, |= dif(b,c)
etc. Aquí hay un breve ejemplo:
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
esta pregunta o cualquier otra documentación sobre el tema no ayudaría a las personas a buscar.