Groovy中两个等价属性不相等的原因
请查看以下简单代码:Groovy中两个等价属性不相等的原因,groovy,groovyshell,groovy-console,Groovy,Groovyshell,Groovy Console,请查看以下简单代码: String.metaClass { getA = {delegate <<= delegate} } assert 'a'.a == 'a'.a 为什么结果为假 我在Windows7SP1上使用Groovy2.4.7,在Groovy中对字符串执行LeftShift生成一个StringBuffer() 因此,'a'.a='a'.a试图在两个StringBuffers上进行相等 使用StringBuffer无法做到这一点,因为equals方法没有重载,并且
String.metaClass {
getA = {delegate <<= delegate}
}
assert 'a'.a == 'a'.a
为什么结果为假
我在Windows7SP1上使用Groovy2.4.7,在Groovy中对字符串执行LeftShift生成一个
StringBuffer
()
因此,'a'.a='a'.a
试图在两个StringBuffers上进行相等
使用
StringBuffer
无法做到这一点,因为equals
方法没有重载,并且在Groovy中对字符串执行左移位会生成StringBuffer
()
因此,'a'.a='a'.a
试图在两个StringBuffers上进行相等
使用
StringBuffer
无法做到这一点,因为equals
方法没有重载,而且Got!所以它将是{(delegate或justdelegate+delegate
get!所以它将是{(delegate或justdelegate+delegate
Result: Assertion failed:
assert 'a'.a == 'a'.a
| | |
| false aa
aa