Я шукав відповідь на те, що |=робиться в Groovy, і хоча відповіді вище правильні, вони не допомогли мені зрозуміти конкретний фрагмент коду, який я шукав.
Зокрема, при застосуванні до булевої змінної "| =" встановить її в TRUE, коли він вперше зіткнеться з правдивим виразом праворуч і утримує значення TRUE для всіх | = наступних викликів. Як засувка.
Ось спрощений приклад цього:
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
Вихід:
false
false
true
true
Редагувати : Чому це корисно?
Розглянемо ситуацію, коли хочеш знати, чи змінилося щось на різних об'єктах, і якщо так, сповісти про якісь зміни. Отже, ви встановите hasChangesбулевий і встановите його на, |= diff (a,b)а потім |= dif(b,c)і т.д. Ось короткий приклад:
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до цього питання чи будь-яку іншу документацію на цю тему не допоможе людям, які шукають.