Я искал ответ о том, что |=
делает в Groovy, и, хотя ответы выше верны, они не помогли мне понять определенный фрагмент кода, на который я смотрел.
В частности, при применении к логической переменной «| =» она будет установлена в значение ИСТИНА, когда в первый раз встречает правдивое выражение с правой стороны, и УДЕРЖИВАЕТ свое значение ИСТИНА для всех последующих вызовов =. Как защелка.
Вот упрощенный пример этого:
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
не поможет ли поиск людей что-то подобное этому вопросу или какой-либо другой документации по этой теме.