Arrays Groovy数组。[[]、[]].toArray()和[[]、[]]*.toArray()之间的区别是什么
我已经在Arrays Groovy数组。[[]、[]].toArray()和[[]、[]]*.toArray()之间的区别是什么,arrays,groovy,Arrays,Groovy,我已经在groovy中为参数化单元测试准备了数据: @Parameterized.Parameters static List data() { [ ['20101113', 'DATE', '20101114', 'DATE', 'some statement', '20101101T000000/20110101T000000', null,
groovy
中为参数化单元测试准备了数据:
@Parameterized.Parameters
static List data() {
[
['20101113', 'DATE',
'20101114', 'DATE',
'some statement',
'20101101T000000/20110101T000000',
null,
['some', 'expected', 'data', 'results']]
// ...and other
]*.toArray()
}
它工作正常。我检查了这段代码,并尝试将]*.toArray()
替换为].toArray()
我将更改恢复到原来的状态,但无法理解指令]的原因。toArray()
出乎意料?].toArray()
是如何工作的,以及].toArray()
和]*.toArray()
之间的区别是什么?从中,*。
称为扩展运算符并返回列表
扩展运算符(*。
)用于对聚合对象的所有项调用操作。这相当于对每个项目调用操作并将结果收集到列表中:
如果没有*
,toArray
只返回一个对象数组,当然不能在运行时将数组强制转换为列表
使用
*
您当前的代码可以执行以下操作:
static List data() {
def result = []
List input = [
['20101113', 'DATE',
'20101114', 'DATE',
'some statement',
'20101101T000000/20110101T000000',
null,
['some', 'expected', 'data', 'results']]
// ...and other
]
for (def item : input) {
result.add(item != null ? ((List) item).toArray() : null)
}
result
}
*。
是一个扩展点运算符。希望这个例子能有所帮助-
static List data() {
def result = []
List input = [
['20101113', 'DATE',
'20101114', 'DATE',
'some statement',
'20101101T000000/20110101T000000',
null,
['some', 'expected', 'data', 'results']]
// ...and other
]
for (def item : input) {
result.add(item != null ? ((List) item).toArray() : null)
}
result
}