Szukałem odpowiedzi na pytanie, co |=
robi Groovy i chociaż powyższe odpowiedzi są prawidłowe, nie pomogły mi zrozumieć konkretnego fragmentu kodu, na który patrzyłem.
W szczególności, po zastosowaniu do zmiennej logicznej „| =” ustawi ją na PRAWDA, kiedy po raz pierwszy napotka prawdziwe wyrażenie po prawej stronie i zatrzyma swoją PRAWDZIWĄ wartość dla wszystkich | = kolejnych wywołań. Jak zatrzask.
Oto uproszczony przykład tego:
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
Wynik:
false
false
true
true
Edycja : Dlaczego to jest przydatne?
Rozważ sytuację, w której chcesz wiedzieć, czy coś się zmieniło na różnych obiektach, a jeśli tak, powiadom jedną ze zmian. Tak więc hasChanges
ustawilibyśmy wartość logiczną, |= diff (a,b)
a następnie |= dif(b,c)
itd. Oto krótki przykład:
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
do tego pytania lub jakiejkolwiek innej dokumentacji na ten temat nie pomogłoby ludziom w wyszukiwaniu.