10
votes

Comment remplacer un élément donné dans une liste?

Ceci décrit assez bien le problème:

scala> var l2 = List(1,2,3)
l2: List[Int] = List(1, 2, 3)

scala> l2(2) = 55
<console>:10: error: value update is not a member of List[Int]
              l2(2) = 55
              ^


0 commentaires

5 Réponses :


2
votes

Votre problème est que les listes de Scala sont immuables, vous devez plutôt utiliser une liste mutable. Importer Scala.Collection.Butable.Queue et utilisez cela à la place. La file d'attente est un mutableiniste, il devrait donc faire ce que vous voulez.


1 commentaires

Non nécessaire d'utiliser une structure mutable, comme indiqué par Calum ci-dessus, la méthode mise à jour renvoie la copie d'une liste avec un élément donné remplacé



3
votes

La liste que vous créée est immuable.

scala> val l = List(1,2,3)
l: List[Int] = List(1, 2, 3)
scala> l.getClass
res3: java.lang.Class[_] = class scala.collection.immutable.$colon$colon


1 commentaires

Merci aux deux mais qui n'irez pas que je travaille avec l'API existante qui a une liste immuable. Je suppose que je dois alors remplacer toute la liste de la reconstruire.



31
votes

scala.list code> est immuable em>, ce qui signifie que vous ne pouvez pas le mettre à jour en place. Si vous souhaitez créer un copier em> de votre liste qui contient le mappage mis à jour, vous pouvez procéder comme suit:

scala.collection.mutable.Buffer <=> java.util.List


0 commentaires

3
votes

Mais vous pouvez envelopper l'affectation dans une implicite si vous n'aimez pas mis à jour xxx


0 commentaires

1
votes

Les listes sont immuables à Scala. Mais si vous souhaitez remplacer un élément dans une liste, vous pouvez utiliser une méthode "mise à jour" comme celle-ci xxx

puisque les listes sont immuables, cela crée une copie de la première liste appelée num (comme indiqué La nouvelle liste à 'NUM') en remplaçant le 0ème élément à 22.SO La méthode de mise à jour genaral est xxx


2 commentaires

Bien que nous vous remercions de votre réponse, il serait préférable de fournir une valeur supplémentaire sur les autres réponses. Dans ce cas, votre réponse ne fournit pas de valeur supplémentaire, car un autre utilisateur a déjà posté cette solution. Si une réponse précédente vous a été utile, vous devez le voter au lieu de répéter les mêmes informations.


Désolé, c'est ma première réponse à Stackoverflow.i a écrit ce que j'ai compris sur la méthode "mise à jour" et je pensais que ce sera utile aux autres plus, je n'avais aucune idée de répéter. Je n'ai plus désolé de répéter.