在python中,以下语句返回正确的结果:
>>> 1 == 1 == 1
True
>>> 1 == 1 == 0
False
这种构造(或类似)在groovy中是否可行?以下失败:
groovy:000> 1 == 1 == 1
===> false
因为第一次比较评估为true
且true
不等于1
。对此有任何解决方法吗?
答案 0 :(得分:1)
解决方法当然是使用AST转换:http://docs.groovy-lang.org/docs/next/html/documentation/core-metaprogramming.html#developing-ast-xforms
答案 1 :(得分:1)
或者如果不是您坚持的AST路线:
(1 == 1) && (1 == 1)
可以以编程方式执行以下操作:
public <T> Boolean allEqual(T... elements) {
elements.toList().collate(2, 1, false).every { a, b -> a == b }
}
assert allEqual(1, 1, 1)