如何在闭包和方法之间共享参数(双向传递和返回),如下面显示的groovy代码?
问题描述:
Groovy代码:如何传递和返回的参数或值如何在闭包和方法之间共享参数(双向传递和返回),如下面显示的groovy代码?
def method (int a, Closure c) {
Query q = new Query()
c.delegate = q
c()
//label 1: pass a to label 2 and get str from there
}
class Query
{
void key (String str) {
//label 2: return str and get a to method label 1.
}
}
method(5) {
key "got"
}
如何获得在上面所示的Groovy代码都标签的访问。
我不知道如何使用此瓶盖内像.call()
return
某些键。
更新1:
def method (int a, Closure c) {
Query q = new Query()
c.delegate = q
c.call(a)
def str = q.str
println str
}
class Query
{
def str
def a
void key (String str) {
this.str = str
this.a=a
println a
}
}
method(5) {
key "got"
}
实际输出:
null
got
预期输出:
5
got
如何解决这个 ?
答
如何像
def method (int a, Closure c) {
Query q = new Query()
q.a = a
c.delegate = q
c.call()
def str = q.str
println str
}
class Query
{
def str
def a
void key (String str) {
this.str = str
println a
}
}
method(5) {
key "got"
}