2012-03-01 12 views
30

Con todas las formas abreviadas de hacer las cosas en Groovy, tiene que haber una manera más fácil de iterar una lista mientras se tiene acceso a un índice de iteración.Groovy, cómo iterar una lista con un índice

for(i in 0 .. list.size()-1) { 
    println list.get(i) 
} 

¿No hay un índice implícito en un bucle básico for?

for(item in list){ 
    println item  
    println index 
} 

Respuesta

81

Puede utilizar eachWithIndex:

list.eachWithIndex { item, index -> 
    println item 
    println index 
} 

con Groovy 2.4 y versiones posteriores, también se puede utilizar el método indexed(). Esto puede ser útil para acceder al índice con métodos como collect:

def result = list.indexed().collect { index, item -> 
    "$index: $item" 
} 
println result 
+0

gran respuesta, donde puedo encontrar información sobre los cierres como 'eachWithIndex' y los tipos de argumentos que toman? – raffian

+1

Comenzaría aquí: http://groovy.codehaus.org/GDK+Extensions+to+Object y http://groovy.codehaus.org/JN1015-Collections – ataylor

+5

También http://groovy.codehaus.org/ groovy-jdk/es una gran referencia. – doelleri

1

intente hacer esto si desea iniciar Índice 1.

[ 'rohit', 'ravi', 'roshan' ].eachWithIndex { name, index, indexPlusOne = index + 1 -> 
    println "Name $name has position $indexPlusOne" 
} 
Cuestiones relacionadas