Clojure - Nature immuable

Par défaut, les structures sont également immuables, donc si nous essayons de changer la valeur d'une clé particulière, cela ne changera pas.

Exemple

Un exemple de la façon dont cela se produit est montré dans le programme suivant.

(ns clojure.examples.example
   (:gen-class))
(defn Example []
   (defstruct Employee :EmployeeName :Employeeid)
   (def emp (struct-map Employee :EmployeeName "John" :Employeeid 1))
   (println (:EmployeeName emp))
   
   (assoc emp :EmployeeName "Mark")
   (println (:EmployeeName emp)))
(Example)

Dans l'exemple ci-dessus, nous essayons d'utiliser la fonction 'assoc' pour associer une nouvelle valeur au nom de l'employé dans la structure.

Production

Le programme ci-dessus produit la sortie suivante.

John
John

Cela montre clairement que la structure est immuable. La seule façon de changer la valeur est de créer une nouvelle variable avec la valeur modifiée comme indiqué dans le programme suivant.

Exemple

(ns clojure.examples.example
   (:gen-class))
(defn Example []
   (defstruct Employee :EmployeeName :Employeeid)
   (def emp (struct-map Employee :EmployeeName "John" :Employeeid 1))
   (def newemp (assoc emp :EmployeeName "Mark"))
   (println newemp))
(Example)

Production

Le programme ci-dessus produit la sortie suivante.

{:EmployeeName Mark, :Employeeid 1}