鉴于以下常规功能:
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/