Question

Je joue à Scala pour essayer de comprendre, donc cet échantillon de code est tout simplement académique.

J'essaie de passer une liste mutable à une fonction, que cette fonction exécute fonctionne dessus, puis après l'appel de fonction, je peux utiliser la liste mise à jour.

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
}

Le seul code ci-dessus qui ne compile pas est le var dans def initList(), et parce que les données sont alors un val Je ne peux pas y effectuer de mutations dans la fonction.

Permettez-moi de commencer par dire que je sais à Scala, les mutateurs sont généralement mal vu, donc je ne suis pas seulement ouvert à une réponse directe à ma question, mais ouverte à de meilleures façons de le faire entièrement. Parfois, dans les projets, il existe un élément de données qui va d'un endroit à l'autre pour être mis à jour, mais si vous ne pouvez pas transmettre des données à une fonction à modifier, quelle est une bonne alternative?

J'ai lu des tutoriels et Google pour cela, je suppose que je ne trouve pas grand-chose à ce sujet car ce n'est généralement pas fait de cette façon à Scala.

Pas de solution correcte

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top