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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top