Im DSL page of groovy sie zeigen dieseGroovy Closure Wiederverwendung vs Rehydrate Kopie
def email(Closure cl) {
def email = new EmailSpec()
def code = cl.rehydrate(email, this, this)
code.resolveStrategy = Closure.DELEGATE_ONLY
code()
}
Warum fordern sie rehydrate
statt Zuweisung nur die Delegierten der Schließung:
def email(Closure cl) {
def email = new EmailSpec()
cl.delegate = email
cl.resolveStrategy = Closure.DELEGATE_ONLY
cl()
}
Mit anderen Worten, warum tun wir brauchen eine Kopie des Verschlusses, anstatt den gegebenen wieder zu verwenden. Ich sehe nicht unbedingt ein Problem mit rehydrieren, aber ich sehe auch nicht die Notwendigkeit, die mir sagt, dass ich etwas nicht verstehe
'rehydrate' setzt nicht nur den Delegaten –
@tim_yates Ich weiß, es erstellt einen Klon. Meine Frage ist mehr, warum das Dokument einen Klon empfiehlt, anstatt dasselbe Objekt wieder zu verwenden und zu vermeiden, ein neues Objekt zu erstellen. Dafür muss es einen Grund geben – Hilikus