我可能误解了如何使用varargs,但是根据GroovyDocsforClosures,对于函数public V call(Object... args)
,arguments参数“可以是单个值或值列表”。
但当我尝试做这样的事情时:
Closure myClosure = { arg1, arg2, arg3 ->
println arg1 == null
println arg2 == null
println arg3 == null
}
Object[] argsArray = new Object[]{"John", "Jack", "Mack"}
myClosure.call(argsArray)
编译器会抛出groovy.lang.MissingMethodException:无方法签名:.call()适用于参数类型:([Java语言对象;)
我甚至无法让varargs函数在传入实际的varargs时工作。
def myVarargsFunction(Object... args){
println "myVarargsFunction"
myClosure.call(args)
}
这段代码导致了同样的错误(当然是在我改变了Closure myClosure
的作用域之后)。我不明白为什么或者这些情况都不起作用。我知道有其他的方法可以让它起作用,我只是想知道为什么它不起作用。
1条答案
按热度按时间wkyowqbh1#
您可以使用分摊运算子: