关于 groovy 中的 + 和 is 运算符的问题

Question about + and the is operator in groovy

为什么这样可以:

assert 'foo'+' bar'.is('foo baz')

?

这失败了,但没关系:

assert 'foo'+' bar' == 'foo baz'    
assert 'foo'+'bar'.is('foo baz')

.+

之前评估

所以这个表达式与

相同
assert 'foo'+ ('bar'.is('foo baz'))
assert 'foo'+ false
assert 'foofalse'

平等和身份是两个不同的概念。 is 测试身份,也就是说它测试 2 个引用是否指向同一个对象。 == 测试相等性,也就是说它测试对象是否彼此“相等”,相等性由 equals 方法定义(有时在某些情况下为 compareTo 方法)。