W Scali, często używać iterator zrobić for
pętli w rosnącym porządku jak:Scala w dół lub maleje dla pętli?
for(i <- 1 to 10){ code }
Jak to zrobić tak, że idzie od 10 do 1? Domyślam się, że 10 to 1
daje pusty iterator (jak zwykła matematyka zakresu)?
Zrobiłem skrypt Scala, który rozwiązuje go, wywołując odwrotną stronę na iteratorze, ale to nie jest miłe w mojej opinii, czy podążanie tą drogą ma miejsce?
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: Nie ma za co. Powinienem też wskazać, że istnieje również "do", że można użyć zamiast "to", aby wykluczyć prawy punkt końcowy z zakresu. Lewy punkt końcowy jest zawsze uwzględniany. –
Już wiedziałem o do, aż do jest również funkcją na liczbach całkowitych, jednak "by" musi być funkcją w zakresie/iteratorze, co jest zwracane z funkcji "do" i "do". Dzięki i tak :) – Felix
Odpowiedź Randall jest najlepsza, ale myślę, że 'Range.inclusive (10, 1, -1)' zasługuje na wzmiankę. –