簡體   English   中英

如何在閉包和方法之間共享參數(雙向傳遞和返回),如下面的常規代碼所示?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM