Dans Scala, vous utilisez souvent un itérateur pour faire une forboucle dans un ordre croissant comme:
for(i <- 1 to 10){ code }
Comment feriez-vous pour que ça passe de 10 à 1? Je suppose que 10 to 1donne un itérateur vide (comme les mathématiques de plage habituelles)?
J'ai fait un script Scala qui le résout en appelant reverse sur l'itérateur, mais ce n'est pas sympa à mon avis, est-ce que la suite est la voie à suivre?
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))
untilque vous pouvez utiliser à la place detopour exclure le point final de droite de la plage. Le point de terminaison de gauche est toujours inclus.