Trong Scala, bạn thường sử dụng một trình lặp để thực hiện một forvò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))
untilbạ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.