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

Wil*_*ldM 7 groovy

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

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

byte[] combineArrays(foo, bar, int start) {
  [*foo[0..<start], *bar, *foo[start..<foo.size()]]
}
Run Code Online (Sandbox Code Playgroud)

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

我假设这个代码打算传递foo和bar 的成员而不是多维数组.那么星号究竟是什么意思呢?

非常感谢你的帮助.

Dón*_*nal 10

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

def add(Number a, Number b) {
  return a + b
}
Run Code Online (Sandbox Code Playgroud)

而这个清单

def args = [1, 2]
Run Code Online (Sandbox Code Playgroud)

我们不应该这样做:

add(args)
Run Code Online (Sandbox Code Playgroud)

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

add(*args)
Run Code Online (Sandbox Code Playgroud)

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

  • @taylor这是真的,但它是IMO语言的一个可怕特征,并计划在Groovy 2.0中删除(所以不应该鼓励使用它) (2认同)