以下代码中的函数f
只是尝试打印出它的参数以及它接收到的参数数量。但是,它会扩展数组参数(但不是数组列表),如行中所示f(x) // 3
。无论如何要f
不要扩展数组参数,或者至少检测到它已经发生,并且可能纠正它。这样做的原因是因为我的“真正的” f 函数不是那么微不足道,而是将它的参数传递给给定的函数g
,它通常不是可变参数函数,而是直接将数组作为参数,并且扩展为f
搞砸了。
def f = {
Object... args ->
print "There are: ";
print args.size();
println " arguments and they are: ";
args.each { println it };
println "DONE"
}
def x = new int[2];
x[0] = 1;
x[1] = 2;
f(1,2); // 1
f([1,2]); // 2
f(x); // 3