web-dev-qa-db-fra.com

Un moyen simple de remplacer le nième élément dans un vecteur en clojure?

Par exemple, j'ai un vecteur [1, 2, 3], et je veux mettre à jour le deuxième élément pour que le vecteur devienne [1, 5, 3]. Dans d'autres langues, je ferais simplement quelque chose comme array[1] = 5, mais je ne suis au courant de rien qui me permettrait de le faire facilement à Clojure.

Réflexions sur la façon d'accomplir cela, ou sur l'opportunité d'utiliser une structure de données différente?

48
wrongusername

assoc fonctionne très bien pour cela. Il prend l'index où mettre la nouvelle valeur et retourner le vecteur nouvellement créé:

Clojure> (assoc [1 2 3] 1 5)
[1 5 3]
72
yves Baumes