Je cherchais une réponse sur ce qui se |=
passe dans Groovy et bien que les réponses ci-dessus soient exactes, elles ne m'ont pas aidé à comprendre un morceau de code particulier que je regardais.
En particulier, lorsqu'elle est appliquée à une variable booléenne, "| =" la définira sur VRAI la première fois qu'elle rencontrera une expression véridique sur le côté droit et conservera sa valeur VRAIE pour tous les appels | | suivants. Comme un verrou.
Voici un exemple simplifié de ceci:
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
Production:
false
false
true
true
Edit : Pourquoi est-ce utile?
Considérez une situation où vous voulez savoir si quelque chose a changé sur une variété d'objets et si c'est le cas, notifiez l'une des modifications. Donc, vous configurez un hasChanges
booléen et le définissez sur |= diff (a,b)
, puis |= dif(b,c)
etc. Voici un bref exemple:
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
à cette question ou toute autre documentation sur le sujet n'aiderait pas les gens à chercher.