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

时间:2018-05-06 08:59:27

标签: java grails groovy closures

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

例如在Grails中我们有:

 User.createCriteria().list(){}

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

1 个答案:

答案 0 :(得分:2)

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

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上找到更多信息。