当闭包的resolveStrategy设置为DELEGATE_ONLY
或DELEGATE_FIRST
时,解析方法和代理的属性之间的嵌套闭包不同。例如,在下面,x
解析为f
的代表(我期望的),但keySet()
解析为g
的代表。方法和属性之间的嵌套闭包解析不同?
def g = {->
def f = {
{-> [x, keySet()]}()
}
f.resolveStrategy = Closure.DELEGATE_ONLY
f.delegate = [x: 1, f: 0]
f()
}
g.delegate = [x: 0, g: 0]
g()
结果:[1, ['x', 'g']]
虽然没有嵌套关闭
def g = {->
def f = {
[x, keySet()]
}
f.resolveStrategy = Closure.DELEGATE_ONLY
f.delegate = [x: 1, f: 0]
f()
}
g.delegate = [x: 0, g: 0]
g()
结果:[1, ['x', 'f']]
这种行为预期和地方记录?这是一个错误吗?
Jira创建:https://jira.codehaus.org/browse/GROOVY-7232 – Matthew
Jira的新家:https://issues.apache.org/jira/browse/GROOVY-7232 – Matthew