以下代碼中的函數f
只是試圖打印出它的參數以及它接收的數量。但是,它擴展了陣列參數(但不是陣列列表),如行f(x) // 3
所示。反正有f
不能擴展數組參數,或者至少檢測到它已經發生,並且可能正確。原因是因爲我的「真正的」f函數並不是微不足道的,而是將它的參數傳遞給給定的函數g
,它通常不是一個可變參數函數,而是直接將數組視爲一個參數,而擴展由f
堵了起來。Groovy:檢測何時通過陣列
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
這不正是一個「標籤」,它是一個地圖:-) – Will
是的,但是你真正在做的是命名你的論點。是的,Groovy會製作出他們的地圖。 – vladtax