我的测试代码如下:
#!/usr/bin/env groovy
class Inner {
def methodMissing(String name, args) {
println "inner:${name}"
}
}
def foo = {
bar()
}
foo.delegate = new Inner()
foo.call()
它给出结果:
inner:bar
如果我添加另一个methodMissing方法,就像这样:
#!/usr/bin/env groovy
class Inner {
def methodMissing(String name, args) {
println "inner:${name}"
}
}
// This method is added
def methodMissing(String name, args) {
println "outer:${name}"
}
def foo = {
bar()
}
foo.delegate = new Inner()
foo.call()
它给出结果:
outer:bar
为什么?我将委托设置为闭包“ foo”。为什么不内在。 methodMissing叫吗?