不变的自然(Immutable Nature)
优质
小牛编辑
122浏览
2023-12-01
默认情况下,结构也是不可变的,因此如果我们尝试更改特定键的值,它将不会更改。
例子 (Example)
以下程序显示了如何发生这种情况的示例。
(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)
在上面的示例中,我们尝试使用'assoc'函数来关联结构中Employee Name的新值。
输出 (Output)
上述程序产生以下输出。
John
John
这清楚地表明结构是不可变的。 更改值的唯一方法是使用更改的值创建一个新变量,如以下程序所示。
例子 (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)
上述程序产生以下输出。
{:EmployeeName Mark, :Employeeid 1}