在 Groovy 中创建类似 createCriteria().list(){} 的方法

Create method like createCriteria().list(){} in Groovy

我想创建一个有多个参数的方法,当我调用该方法时需要创建一个闭包来调用该方法。

例如在 Grails 中我们有:

 User.createCriteria().list(){}

我想创建一个类似列表的方法。

您只需声明一个将闭包作为参数的方法。如果列表中的最后一个参数是一个闭包,那么它可以以这种方式调用:

def doSomething(int arg1, int arg2, Closure arg3) {
    arg3(arg1, arg2)
}

您可以调用:

doSomething(3, 5) {a,b -> a + b}

或如:

doSomething(3, 5, {a,b -> a + b})

该方法也可以没有其他参数但闭包:

def doSomething(Closure arg3) {
    arg3()
}

print doSomething {println "closure invoked"}
print doSomething() {println "closure invoked"}

可以在 closure documentation page 上找到更多信息。