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

Par exemple, j’ai un vecteur [1, 2, 3] et je souhaite 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 dans Clojure.

Réflexions sur la manière d’y parvenir ou sur la nécessité d’utiliser une structure de données différente?

assoc fonctionne bien pour cela. Il faut l’index où placer la nouvelle valeur et retourner le vecteur nouvellement créé:

 Clojure> (assoc [1 2 3] 1 5) [1 5 3] 

La réponse de Yve ne montre pas comment mettre à jour le vecteur d’origine.

Cela fait, mais en tant que noob Clojure, je ne suis pas sûr que ce soit la meilleure façon:

 main=> (def ar [1 2 3]) #'main/ar main=> ar [1 2 3] main=> (def ar (assoc ar 1 5)) #'main/ar main=> ar [1 5 3]