Como dstarh Dicho esto, a menos que usted está buscando un método no destructivo que devuelve un nuevo mapa con sus índices de población, la respuesta Rob Hruska 's es lo que 'que estas buscando.
La respuesta de dstarh le proporciona la versión no destructiva de collectWithIndex
, pero maneja la colección real de resultados también.
por lo general me parece que lo mejor es delegar tal trabajo pesado con el objeto receptor con el fin de jugar bien con polimórficas collect
implementaciones, es decir, en caso de que una clase específica implementa collect
diferente (que poner los resultados en una matriz), que tiene collectWithIndex
delegado asegurará un comportamiento uniforme. Así es como se vería el código:
@Category(List)
class Enumerator {
def enumerateCollecting(Closure closure) {
def index = 0
this.collect { closure.call(it, index++) }
}
}
use(Enumerator) {
['foo', 'bar', 'boo', 'baz'].collectWithIndex { e, i ->
[index: i, element: e]
}
}
Consulte this gist para un ejemplo tanto para eachWithIndex
y collectWithIndex
.
También, al igual que los comentarios a su estado cuestión, hay dos cuestiones Jira abierto para la función que hemos descrito- GROOVY-2383 & GROOVY-3797
parece que es una característica solicitada http: //jira.codehaus.org/browse/GROOVY-2838 – dstarh
respondido con una solución real debajo de – dstarh
Lo que no me gusta para coleccionar con el índice :) – dstarh