我想在调用该方法时创建一个具有多个参数的方法,需要创建一个闭包来调用该方法。
例如在Grails中我们有:
User.createCriteria().list(){}
我想创建一个类似list的方法。
答案 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上找到更多信息。