我一直在寻找|=
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
向该问题或类似主题的任何其他文档添加内容不会帮助人们进行搜索。