在他们展示的DSL page of groovy中
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()
}
换句话说,为什么我们需要封闭的副本而不是重用给定的封闭。我不一定看到使用补水的问题,但我也没有看到需要,这告诉我,我不理解