2012-09-15 20 views
40

Creo que tengo algunas expectativas divertidas ... Quiero repetir los números del 1 al 10. Como un ciclo while dice así:llamando .each {} en IntRange devuelve el rango, no cada número entero

def countMe = 1 
while (countMe<11) { 
    println countMe 
    countMe++ 
} 

que estaba esperando que el siguiente haría esto también:

[1..10].each { println it } 

Pero lo que realmente imprime el IntRange, no cada Integer de la gama. ¿Cuál es (sintácticamente) la forma más cercana a mi fantasía [x..y].each{} de obtener cada una de una lista de números?

Respuesta

79

Use parentheses not brackets:

(1..10).each{println it} 

[1..10] es una lista de longitud 1 que contiene un único intervalo.

+3

Debe recordar que [1..10] solo significa un rango cuando es un subíndice DESPUÉS de otra variable. Cuando está solo, entonces es una LISTA de un rango. Estas pequeñas inconsistencias surgen porque Groovy trata de ampliar la sintaxis de Java con sus propias adiciones. –

Cuestiones relacionadas