Si tuviéramos que escribir código para escribir por pantalla ’0123456789′ utilizaríamos los bucles tradicionales for o while.
1 for (i=0; i<10; i++){2 print i
3 }
1 int i = 02 while (i < 10) {3 print i
4 i++
5 }
Sin embargo, en Groovy hay muchas formas diferentes de implementar un bucle, unas más conocidas y utilizadas que otras.
Veamos cuáles son las alternativas que nos ofrece este lenguaje:
1) upto / downto
Ejemplo:
1 0.upto 9, {print it}
Ejemplo: para implementar un bucle decreciente de 9 a 0, en este caso, la salida por pantalla sería 9876543210.
1 9.downto 0, {print it}
2) times
Ejemplo:
1 10.times {print it}
3) step
Ejemplo:
1 0.step 10, 1, {print it}
4) each
Ejemplo: utilizando un rango numérico.
1 (0..9).each {print it}
Ejemplo: utilizando una lista de valores numéricos.
1 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9].each{ print it}
5) eachWithIndex
Ejemplo:
1 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9].eachWithIndex {listValue, index -> print listValue}
6) for
Ejemplo: utilizando un rango numérico.
1 for (i in 0..9) {2 print i
3 }
Ejemplo: utilizando una lista de valores numéricos.
1 for (int i : [0,1,2,3,4,5,6,7,8,9]) {2 print i
3 }
Adjunto un gráfico donde se puede comprobar que la implementación más eficiente sería utilizar el bucle for con un rango numérico. Utilizar el bucle for con una lista, sería un poco menos eficiente, pero sin duda, el tiempo de ejecución seguiría siendo mucho menor que utilizando otras implementaciones.
me gusta
Gracias
¿Y cuál dirías que es el sistema más eficiente?
Hola Yurena.
He actualizado el post incluyendo un gráfico. Espero que esto responda tu pregunta.
Saludos!!