【发布时间】:2012-03-20 08:13:03
【问题描述】:
使用 Groovy 中的所有速记方式,必须有一种更简单的方法来迭代列表,同时访问迭代索引。
for(i in 0 .. list.size()-1) {
println list.get(i)
}
基本for 循环中没有隐式索引吗?
for( item in list){
println item
println index
}
【问题讨论】:
使用 Groovy 中的所有速记方式,必须有一种更简单的方法来迭代列表,同时访问迭代索引。
for(i in 0 .. list.size()-1) {
println list.get(i)
}
基本for 循环中没有隐式索引吗?
for( item in list){
println item
println index
}
【问题讨论】:
你可以使用eachWithIndex:
list.eachWithIndex { item, index ->
println item
println index
}
对于 Groovy 2.4 和更高版本,您还可以使用 indexed() 方法。这可以很方便地使用 collect 之类的方法访问索引:
def result = list.indexed().collect { index, item ->
"$index: $item"
}
println result
【讨论】:
eachWithIndex 这样的闭包以及它们采用的参数类型?
如果你想开始索引 1,试试这个。
[ 'rohit', 'ravi', 'roshan' ].eachWithIndex { name, index, indexPlusOne = index + 1 ->
println "Name $name has position $indexPlusOne"
}
【讨论】: