Я пытаюсь разложить какой-нибудь отличный код внутри замыкания.
Вот пример кода, иллюстрирующий то, что я хочу сделать (см. HibernateCriteriaBuilder )
базовый код:
def criteria = Account.createCriteria()
def results = criteria {
if(A) {
// full code section when A
}
if(B) {
// full code section when B
}
...
if(N) {
// full code section when N
}
}
Теперь я хочу извлечь блок условий в методе, чтобы иметь возможность использовать их в других критериях.
Вот код, который у меня сейчас есть:
def criteria = Account.createCriteria()
def results = criteria {
a(criteria)
b(criteria)
...
n(criteria)
}
def a(criteria) { if(A) /* full code section when A */ }
def b(criteria) { if(B) /* full code section when B */ }
...
def n(criteria) { if(N) /* full code section when N */ }
Есть ли отличный способ избежать передачи критериев в аргументе каждого метода? (другими словами, есть ли способ получить контекст вызова?)
И, чтобы распространить это на другое замыкание, как извлечь метод из Groovy замыкания?