Passando i parametri alle funzioni mutator in Scala
Domanda
Sto giocando a Scala per cercare di capirlo, quindi questo campione di codice è semplicemente accademico.
Sto cercando di passare un elenco mutabile a una funzione, fare funzionare quella funzione su di essa e poi dopo la chiamata della funzione posso utilizzare l'elenco aggiornato.
var data: List[Int] = List()
// Call to function to fill a list
data = initList(data)
// Output only 0-100
data.foreach( num => if (num < 100) { println(num) })
def initList(var data: List[Int]) : List[Int] = {
for ( i <- 0 to 1000 )
{
data = i :: data
}
data = data.reverse
data
}
L'unico codice sopra che non si compila è il var
in def initList()
, e perché i dati sono quindi a val
Non posso eseguire mutazioni all'interno della funzione.
Vorrei iniziare dicendo che lo so in Scala, i mutatori di solito sono disapprovati, quindi non sono solo aperto a una risposta diretta alla mia domanda, ma apro a modi migliori per farlo del tutto. Occasionalmente nei progetti ci sono un pezzo di dati che vanno da un luogo all'altro da aggiornare, ma se non è possibile passare i dati a una funzione da modificare, qual è una buona alternativa?
Ho letto tutorial e Google sono stato per questo, suppongo che non riesco a trovarne molto perché di solito non è fatto in questo modo a Scala.
Nessuna soluzione corretta