【问题标题】:How to metaClass a Groovy method that takes a closure?如何对采用闭包的 Groovy 方法进行元分类?
【发布时间】:2012-09-22 14:19:14
【问题描述】:

一个元类如何成为一个接受对象和闭包的方法?

具体来说,

public void eachRow(GString gstring, Closure closure)

我想对 eachRow() 进行元分类,以便打印 gstring 参数,并忽略闭包。目标是创建一个应用程序,当传递某个参数时,它会使用 groovy.sql.Sql 执行某种“试运行”执行,而不是执行查询,它只是打印它通常会执行的语句。

【问题讨论】:

    标签: groovy metaclass


    【解决方案1】:

    所以我认为我的问题不是我如何定义方法,而是我是什么(或没有返回)。这似乎工作......

    sql.metaClass.eachRow = { String qry, Closure c ->
        println qry
        new GroovyRowResult([:]) // I was returning null, adding this fixed me.
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-03-19
      • 1970-01-01
      • 1970-01-01
      • 2012-04-25
      • 2014-04-02
      • 2023-03-08
      • 2012-03-24
      • 1970-01-01
      相关资源
      最近更新 更多