[英]How to share arguments ( pass & return in both direction) between closure and method like shown below groovy code?
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"
}
如何在上面顯示的常規代碼中訪問兩個標簽。
我不知道如何在此閉包內使用某些鍵,例如.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"
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.