如何将多个字符串参数传递给groovy中的函数

Abh*_*gam 1 java groovy

我正在尝试将多个字符串作为参数传递给函数

功能

void addColumn(java.lang.String... headers)
Run Code Online (Sandbox Code Playgroud)

描述

向该网格添加一行列标题。这应该在列的每个维度上调用一次,并且每个维度的标题长度应该匹配。

来自 Groovy 的示例调用添加了 2016 财年和 2017 财年的一月、二月和三月:

builder.addColumn('2016', '2016', '2016', '2017', '2017', '2017') 
builder.addColumn('Jan', 'Feb', 'Mar', Jan', 'Feb', 'Mar')
Run Code Online (Sandbox Code Playgroud)

因此,如果我像上面的示例一样传递参数,它就可以正常工作。我无法找出在 groovy 中动态传递它的方法?

Szy*_*iak 5

在这种情况下,您始终可以传递字符串数组。你的方法

void addColumn(java.lang.String... headers)
Run Code Online (Sandbox Code Playgroud)

使用可变参数,这意味着您可以按原样调用此方法

void addColumn(java.lang.String[] headers)
Run Code Online (Sandbox Code Playgroud)

Varargs 在某些情况下很有用,因为它接受单个参数以及 n 个相同类型的参数。

如果你想在 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[])
Run Code Online (Sandbox Code Playgroud)

运行此脚本将打印到输出:

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...
Run Code Online (Sandbox Code Playgroud)

我希望它有帮助。