Scala downwards or decreasing for loop?

for-loop, iterator, loops, scala

Solution

scala> 10 to 1 by -1
res1: scala.collection.immutable.Range = Range(10, 9, 8, 7, 6, 5, 4, 3, 2, 1)

Problem

In Scala, you often use an iterator to do a `for` loop in an increasing order like: ``` for(i <- 1 to 10){ code } ``` How would you do it so it goes from 10 to 1? I guess `10 to 1` gives an empty iterator (like usual range mathematics)? I made a Scala script which solves it by calling reverse on the iterator, but it's not nice in my opinion, is the following the way to go? ``` 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)) ```

Original source