【问题标题】:Create method like createCriteria().list(){} in Groovy在 Groovy 中创建类似 createCriteria().list(){} 的方法
【发布时间】:2018-05-06 08:59:26
【问题描述】:

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

例如在 Grails 中我们有:

 User.createCriteria().list(){}

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

【问题讨论】:

  • 请分享对该类型方法的示例调用
  • def item(t1,t2){println(t1)} new Example().item(){}
  • @ErnestKiwele def item(t1,t2){println(t1)} new Example().item(){t1=2}

标签: java grails groovy closures


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2015-09-23
    • 2014-05-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多