默认情况下,结构也是不可变的,因此,如果我们尝试更改特定键的值,则它不会更改。
Immutable - 示例
(ns clojure.examples.example (:gen-class)) (defn Example [] (defstruct Employee :EmployeeName :Employeeid) (def emp (struct-map Employee :EmployeeName "Learnfk" :Employeeid 1)) (println (:EmployeeName emp)) (assoc emp :EmployeeName "Mark") (println (:EmployeeName emp))) (Example)
在上面的示例中,我们尝试使用" assoc"函数来关联结构中"EmployeeName"的新值。
上面的程序产生以下输出。
Learnfk Learnfk
这清楚地表明该结构是不可变的。更改值的唯一方法是使用更改后的值创建一个新变量,如以下程序所示。
(ns clojure.examples.example (:gen-class)) (defn Example [] (defstruct Employee :EmployeeName :Employeeid) (def emp (struct-map Employee :EmployeeName "Learnfk" :Employeeid 1)) (def newemp (assoc emp :EmployeeName "Mark")) (println newemp)) (Example)
上面的程序产生以下输出。
{:EmployeeName Mark, :Employeeid 1}
参考链接
https://www.learnfk.com/clojure/clojure-immutable-nature.html
标签:Employeeid,Nature,无涯,Example,emp,Employee,Clojure,Learnfk,EmployeeName From: https://blog.51cto.com/u_14033984/8073009