如何編寫模擬while循環的函數?它應該有兩個參數:條件和表達式來執行。如何在Scala中編寫函數模擬循環while
我試過如下:
val whileLoop: (Boolean,Any)=>Unit = (condition:Boolean, expression:Any) => {
expression
if(condition) whileLoop(condition,expression)
() }
但現在看來,這是不行的,例如我有數組:
val arr = Array[Int](-2,5,-5,9,-3,10,3,4,1,2,0,-20)
另外我有可變我:
var i = 0
我想打印ARR的所有元素。我可以做到這一點下面的代碼:
while(i<arr.length) { println(tab(i)); i+=1 }
我想用我的while循環功能做同樣的。但是我不能編寫引用變量並修改它的函數。我只能使用一個元素來傳遞數組,例如
val nr = Array(0)
和功能:
val printArray: Array[Int]=>Unit = (n:Array[Int]) => {
println(arr(n(0)))
n(0)+=1
()
}
,然後用我的while循環:
whileLoop(nr(0)<arr.length, printArray)
使用上面的代碼後,我得到的StackOverflowError和NR(0)是等於零。還有以下功能:
val printArray: Array[Int]=>Unit = (n:Array[Int]) => {
println(arr(nr(0)))
nr(0)+=1
()
}
給出了相同的結果。
我怎麼能寫正確的功能while循環,並用它來打印所有改編元素?
在此先感謝您的建議。
非常感謝 - 這正是我所需要的。我明白什麼是錯的。 – Paul