Come posso scrivere una funzione che simuli durante il ciclo? Dovrebbero essere necessari 2 argomenti: condizione ed espressione da eseguire.Come scrivere la funzione simulando il loop in Scala
ho provato la seguente:
val whileLoop: (Boolean,Any)=>Unit = (condition:Boolean, expression:Any) => {
expression
if(condition) whileLoop(condition,expression)
() }
ma sembra che non funziona, per esempio Ho array:
val arr = Array[Int](-2,5,-5,9,-3,10,3,4,1,2,0,-20)
anche io ho variabile i:
var i = 0
voglio stampare tutti gli elementi di arr. Posso farlo con il seguente codice:
while(i<arr.length) { println(tab(i)); i+=1 }
Vorrei fare lo stesso con la mia funzione whileLoop. Ma non posso scrivere una funzione che faccia riferimento alla variabile e la modifichi. Potrei passare a ciò usando l'array con un solo elemento, ad es.
val nr = Array(0)
e funzione:
val printArray: Array[Int]=>Unit = (n:Array[Int]) => {
println(arr(n(0)))
n(0)+=1
()
}
e quindi utilizzando nel mio whileLoop:
whileLoop(nr(0)<arr.length, printArray)
Dopo aver utilizzato i codici di cui sopra ottengo StackOverflowError e NR (0) è uguale a zero . Anche la seguente funzione:
val printArray: Array[Int]=>Unit = (n:Array[Int]) => {
println(arr(nr(0)))
nr(0)+=1
()
}
fornisce lo stesso risultato.
Come posso scrivere corretto funzionamento whileLoop e l'uso che per stampare tutti i arr elementi?
Grazie in anticipo per i consigli.
Grazie mille - era esattamente ciò di cui avevo bisogno. Ho capito cosa c'era che non andava. – Paul