2017-08-31 67 views
1

功能我想傳遞多個字符串作爲參數傳遞給函數如何將多個字符串參數傳遞給在常規

功能

void addColumn(java.lang.String... headers) 

說明

添加列標題行到這個網格。 這應該在列的每個維度上調用一次,並且每個維度的標題長度應該匹配。在Groovy

調用示例,從FY16和FY17增加了一月,二月,三月:

builder.addColumn('2016', '2016', '2016', '2017', '2017', '2017') 
builder.addColumn('Jan', 'Feb', 'Mar', Jan', 'Feb', 'Mar') 

所以如果我傳遞參數就像在正常工作上面的例子。我無法弄清楚的在groovy中動態傳遞它的方法?

回答

2

您可以隨時通過在這種情況下字符串數組。你的方法

void addColumn(java.lang.String... headers) 

使用varargs,它意味着你可以調用此方法,因爲它是

void addColumn(java.lang.String[] headers) 

可變參數是在某些情況下非常有用,因爲它接受單一的參數以及參數的正數具有相同的類型。

如果你想調用在Groovy這種方法,你可以通過傳遞一個演員陣容,以String[]做到這一點,例如

def addColumn(String... args) { 
    args.each { println "Adding column ${it}..."} 
} 

println 'Ex 1:' 
addColumn('Jan', 'Feb', 'Mar', 'Apr') 

println 'Ex 2:' 
addColumn(['Jan', 'Feb', 'Mar', 'Apr'] as String[]) 

運行此腳本將打印到輸出:

Ex 1: 
Adding column Jan... 
Adding column Feb... 
Adding column Mar... 
Adding column Apr... 
Ex 2: 
Adding column Jan... 
Adding column Feb... 
Adding column Mar... 
Adding column Apr... 

我希望它能幫助。

+0

由於它的工作:) –

2

可以使用圖示操作:

def headers = ['Jan', 'Feb', 'Mar', 'Jan', 'Feb', 'Mar'] 

addColumn(*headers) 

將展開集合在這種情況下varags。

+0

感謝響應。我嘗試了代碼,但它給了我這個錯誤.. [靜態類型檢查] - 傳播經營者不能被用作方法或關閉的參數與靜態類型檢查要求,因爲參數的個數不能在編譯時確定 –

+0

您是否在代碼中使用了@ @ CompileStatic?如果是這樣,它將不會與您需要刪除註釋的工作。如果你不能刪除它,那麼我不知道如何去做你所要求的。 – cjstehno

+0

您還可以標記,該代碼是與SKIP版本的註釋,使其非靜態的具體方法。 – cjstehno

相關問題