如何在闭包和方法之间共享参数(双向传递和返回),如下面显示的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" 
}