Làm cách nào để viết chức năng mô phỏng trong khi lặp? Cần có 2 đối số: điều kiện và biểu thức để thực hiện.Cách viết chức năng mô phỏng trong khi vòng lặp trong Scala
tôi thử như sau:
val whileLoop: (Boolean,Any)=>Unit = (condition:Boolean, expression:Any) => {
expression
if(condition) whileLoop(condition,expression)
() }
Nhưng có vẻ như nó không hoạt động, ví dụ tôi có mảng:
val arr = Array[Int](-2,5,-5,9,-3,10,3,4,1,2,0,-20)
Ngoài ra tôi có biến i:
var i = 0
Tôi muốn in tất cả các yếu tố của arr. Tôi có thể làm điều đó với đoạn mã sau:
while(i<arr.length) { println(tab(i)); i+=1 }
Tôi muốn làm điều tương tự sử dụng chức năng whileLoop tôi. Nhưng tôi không thể viết chức năng mà tham chiếu đến biến và sửa đổi đó. Tôi có thể sử dụng mảng đó chỉ với một phần tử, ví dụ:
val nr = Array(0)
và chức năng:
val printArray: Array[Int]=>Unit = (n:Array[Int]) => {
println(arr(n(0)))
n(0)+=1
()
}
và sau đó sử dụng trong tôi whileLoop:
whileLoop(nr(0)<arr.length, printArray)
Sau khi sử dụng mã trên tôi nhận được StackOverflowError và nr (0) là bằng zero . Ngoài chức năng sau:
val printArray: Array[Int]=>Unit = (n:Array[Int]) => {
println(arr(nr(0)))
nr(0)+=1
()
}
cho cùng một kết quả.
Làm thế nào tôi có thể viết đúng chức năng whileLoop và sử dụng để in tất cả arr yếu tố?
Cảm ơn trước lời khuyên.
Cảm ơn bạn rất nhiều - đó là chính xác những gì tôi cần. Tôi không hiểu chuyện gì đã xảy ra. – Paul