在Groovy中的数组名称前面的星号?

时间:2012-01-09 15:01:59

标签: groovy

我对Groovy有点新意,所以我确信这是非常明显的事情之一......但是很难通过Google搜索。

在其他语言中,星号往往代表指针。但是,在这段Groovy代码中:

byte[] combineArrays(foo, bar, int start) {
  [*foo[0..<start], *bar, *foo[start..<foo.size()]]
}

我只能想象事实并非如此。指的是,指针? Groovy的?

我假设此代码打算传递foo和bar的成员而不是多维数组。那么星号究竟意味着什么?

非常感谢你的帮助。

1 个答案:

答案 0 :(得分:10)

当像这样使用时,*运算符将List或Array传播到参数列表中。这根本没有帮助,是吗?一个例子呢?假设我们有这个功能:

def add(Number a, Number b) {
  return a + b
}

此列表

def args = [1, 2]

我们不应该这样做:

add(args)

因为函数需要两个数字参数。但我们可以这样做:

add(*args)

因为*运算符将2个元素的List转换为2个参数。您可以将此运算符与Lists和Arrays一起使用。