【发布时间】:2012-09-22 14:19:14
【问题描述】:
一个元类如何成为一个接受对象和闭包的方法?
具体来说,
public void eachRow(GString gstring, Closure closure)
我想对 eachRow() 进行元分类,以便打印 gstring 参数,并忽略闭包。目标是创建一个应用程序,当传递某个参数时,它会使用 groovy.sql.Sql 执行某种“试运行”执行,而不是执行查询,它只是打印它通常会执行的语句。
【问题讨论】:
一个元类如何成为一个接受对象和闭包的方法?
具体来说,
public void eachRow(GString gstring, Closure closure)
我想对 eachRow() 进行元分类,以便打印 gstring 参数,并忽略闭包。目标是创建一个应用程序,当传递某个参数时,它会使用 groovy.sql.Sql 执行某种“试运行”执行,而不是执行查询,它只是打印它通常会执行的语句。
【问题讨论】:
所以我认为我的问题不是我如何定义方法,而是我是什么(或没有返回)。这似乎工作......
sql.metaClass.eachRow = { String qry, Closure c ->
println qry
new GroovyRowResult([:]) // I was returning null, adding this fixed me.
}
【讨论】: