groovy:如何同时将可变参数和闭包传递给方法?

标签 groovy closures

鉴于以下常规功能:

def foo(List<String> params, Closure c) {...}

方法调用将是:
foo(['a', 'b', 'c']) { print "bar" }

但我想在函数调用中去掉括号(列表)。就像是:
foo('a', 'b') { print "bar" }

我无法将 list 参数更改为 varargs,因为 varargs 只能是函数中的最后一个参数(这里的闭包是最后一个)。

有什么建议吗?

最佳答案

看到不可能完全实现你想要的(它写在 Groovy 文档中,你的具体案例是一个问题,不幸的是他们正在迁移文档,所以我现在不能直接链接),那么这些方面的事情呢:

def foo(String... params) {
    println params
    return { Closure c ->
        c.call()
    }
}

foo('a', 'b') ({ println 'woot' })

现在您需要将闭包放在括号中,但您不再需要使用数组了。

关于groovy:如何同时将可变参数和闭包传递给方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27406559/

相关文章:

grails - 无法在 null 对象上获取属性 'config' - Grails Service Spock 测试

java - 使用 mongo-java-driver 使用 x509 证书对 MongoDB v2.6 进行身份验证时遇到问题

java - Scala 闭包和 Java 8 闭包之间的兼容性

JavaScript 类和调用上下文

xml - 如何使用 Groovy 的 XMLSlurper 和 GPathResult 从节点中删除属性?

Groovy 无法使用 `@` 访问父类(super class)的私有(private)属性

java - 在 Java/Groovy 中读取多部分/混合响应

c# - 这还是闭包吗?

swift - 快速捕获功能列表

javascript - JQuery Promise .notify 需要关闭...