In this guide, we will discuss Clojure Immutable Nature. By default structures are also immutable, so if we try to change the value of a particular key, it will not change.
Example
An example of how this happens is shown in the following program.
(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)
In the above example, we try to use the ‘assoc’ function to associate a new value for the Employee Name in the structure.
Output
The above program produces the following output.
John John
This clearly shows that the structure is immutable. The only way to change the value is to create a new variable with the changed value as shown in the following program.
Example
(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)
Output
The above program produces the following output.
{:EmployeeName Mark, :Employeeid 1}
Next Topic : Click Here
Pingback: Clojure - Accessing Individual Fields | Adglob Infosystem Pvt Ltd
Pingback: Clojure - StructMaps | Adglob Infosystem Pvt Ltd