【发布时间】:2011-10-07 12:59:54
【问题描述】:
我正在尝试在闭包中分解一些常规代码。
这是一个示例代码,说明了我想要做什么(请参阅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 闭包中提取方法?
【问题讨论】:
标签: groovy refactoring closures