Trong Scala, bạn thường sử dụng một trình lặp để thực hiện một for
vòng lặp theo thứ tự tăng dần như:
for(i <- 1 to 10){ code }
Bạn sẽ làm như thế nào để nó tăng từ 10 lên 1? Tôi đoán 10 to 1
đưa ra một trình lặp trống (như toán học phạm vi thông thường)?
Tôi đã tạo một tập lệnh Scala giải quyết nó bằng cách gọi đảo ngược trên trình lặp, nhưng theo ý kiến của tôi thì điều đó không tốt, có phải cách sau để thực hiện không?
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))
until
bạn cũng có thể sử dụng nóto
để loại trừ điểm cuối bên phải khỏi phạm vi. Điểm cuối bên trái luôn được bao gồm.