Di Scala, Anda sering menggunakan iterator untuk melakukan forperulangan dalam urutan yang meningkat seperti:
for(i <- 1 to 10){ code }
Bagaimana Anda melakukannya sehingga berubah dari 10 menjadi 1? Saya kira 10 to 1memberikan iterator kosong (seperti matematika kisaran biasa)?
Saya membuat skrip Scala yang menyelesaikannya dengan memanggil terbalik pada iterator, tetapi itu tidak baik menurut saya, apakah berikut ini cara yang harus dilakukan?
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))
untilyang dapat Anda gunakan sebagai penggantitountuk mengecualikan titik akhir kanan dari jangkauan. Titik akhir sisi kiri selalu disertakan.