Wie schreibt man die Funktion Simulation while-Schleife in Scala

Wie kann ich eine Funktion schreiben, die simuliert while-Schleife? Es sollte nimmt 2 Argumente: Bedingung und Ausdruck zu führen.

Ich habe versucht, die folgenden:

val whileLoop: (Boolean,Any)=>Unit = (condition:Boolean, expression:Any) => {
 expression
 if(condition) whileLoop(condition,expression)
 () }    

Aber es scheint, dass es nicht funktioniert, z.B. habe ich array:

val arr = Array[Int](-2,5,-5,9,-3,10,3,4,1,2,0,-20)    

Auch ich habe variable ich:

var i = 0

Will ich drucken, die alle Elemente arr. Ich kann das mit dem folgenden code:

while(i<arr.length) { println(tab(i)); i+=1 }

Ich würde gerne das gleiche zu tun mit meinem while-Schleife Funktion. Aber ich kann nicht schreiben-Funktion, die Referenz auf die variable und ändern. Ich könnte passieren, dass durch die Verwendung der array mit nur einem element, z.B.

val nr = Array(0)

und Funktion:

val printArray: Array[Int]=>Unit = (n:Array[Int]) => {
 println(arr(n(0)))
 n(0)+=1
 ()
}

und dann in meiner while-Schleife:

whileLoop(nr(0)<arr.length, printArray)

Nach der Verwendung von oben genannten codes, die ich bekommen StackOverflowError und nr(0) ist gleich null. Auch die folgende Funktion:

val printArray: Array[Int]=>Unit = (n:Array[Int]) => {
 println(arr(nr(0)))
 nr(0)+=1
 ()
}

gibt das gleiche Ergebnis.

Wie kann ich schreiben die korrekte Funktion while-Schleife und verwenden, drucken Sie alle arr Elemente?

Vielen Dank im Voraus für Ratschläge.

InformationsquelleAutor Paul | 2012-11-11
Schreibe einen Kommentar