En Scala, a menudo se utiliza un iterador que hacer un bucle for
en un orden creciente como:Scala hacia abajo o decreciente para el ciclo?
for(i <- 1 to 10){ code }
¿Cómo hacerlo así que va de 10 a 1? Supongo que 10 to 1
da un iterador vacío (como las matemáticas de rango habitual)?
Hice una secuencia de comandos de Scala que lo resuelve llamando a la inversa en el iterador, pero no es bueno en mi opinión, es el siguiente el camino a seguir?
def nBeers(n:Int) = n match {
case 0 => ("No more bottles of beer on the wall, no more bottles of beer." +
"\nGo to the store and buy some more, " +
"99 bottles of beer on the wall.\n")
case _ => (n + " bottles of beer on the wall, " + n +
" bottles of beer.\n" +
"Take one down and pass it around, " +
(if((n-1)==0)
"no more"
else
(n-1)) +
" bottles of beer on the wall.\n")
}
for(b <- (0 to 99).reverse)
println(nBeers(b))
@Felix: De nada. También debería haber señalado que también hay 'hasta 'que puede usar en lugar de' a' para excluir el punto final de la derecha del rango. El punto final izquierdo siempre está incluido. –
Ya sabía acerca de hasta, hasta que también es una función en enteros, sin embargo, "por" debe ser una función en el rango/iterador cualquiera que sea el resultado de las funciones "hasta" y "hasta". Gracias de todos modos :) – Felix
La respuesta de Randall es la mejor, pero creo que 'Range.inclusive (10, 1, -1)' merece mención. –