【发布时间】:2022-07-01 00:42:29
【问题描述】:
我可能对如何使用可变参数有误解,但根据Groovy Docs for Closures,对于函数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: No signature of method: .call() is applicable for argument types: ([Ljava.lang.Object;)
当传入一个实际的可变参数时,我什至无法让可变参数函数工作。
def myVarargsFunction(Object... args){
println "myVarargsFunction"
myClosure.call(args)
}
此代码导致相同的错误(当然,在我更改了Closure myClosure 的范围之后)。
我不明白为什么这两种情况都不起作用。我知道还有其他方法可以使它起作用,我只是想了解为什么这不起作用。
【问题讨论】:
标签: groovy