请看一下这个简单的代码:
String.metaClass {
getA = {delegate <<= delegate}
}
assert 'a'.a == 'a'.a
Result: Assertion failed: assert 'a'.a == 'a'.a | | | | false aa aa
为什么结果 FALSE ?
我在Windows 7 SP1上使用Groovy 2.4.7
答案 0 :(得分:0)
Groovy中的String上的LeftShift会生成StringBuffer
(docs)
所以'a'.a == 'a'.a
试图在两个StringBuffers上做等号。
由于StringBuffer
方法未超载,just checks if they are the same instance
equals
执行此操作