繁体   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