在groovy 的 DSL 页面中,他们显示了这个
def email(Closure cl) {
def email = new EmailSpec()
def code = cl.rehydrate(email, this, this)
code.resolveStrategy = Closure.DELEGATE_ONLY
code()
}
他们为什么打电话rehydrate
而不是仅仅将委托分配给闭包:
def email(Closure cl) {
def email = new EmailSpec()
cl.delegate = email
cl.resolveStrategy = Closure.DELEGATE_ONLY
cl()
}
换句话说,为什么我们需要一个闭包的副本而不是重用给定的闭包。我不一定认为使用补水有问题,但我也没有看到需要,这告诉我有些东西我不理解