Clojure Immutable Nature

2018-12-27 10:44 更新

默認(rèn)情況下,結(jié)構(gòu)也是不可變的,所以如果我們試圖改變特定鍵的值,它不會改變。

語法

下面是 Immutable Nature 的使用示例:

(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'函數(shù)在結(jié)構(gòu)中為Employee Name關(guān)聯(lián)一個新值。

輸出

以上示例將輸出以下結(jié)果:

John
John

這清楚地表明該結(jié)構(gòu)是不可變的。 更改值的唯一方法是使用更改后的值創(chuàng)建一個新變量,如以下程序所示。

(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)

輸出

以上示例將輸出以下結(jié)果:

{:EmployeeName Mark, :Employeeid 1}
以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號