首页 > 其他分享 >无涯教程-Clojure - Immutable Nature函数

无涯教程-Clojure - Immutable Nature函数

时间:2023-10-28 21:32:28浏览次数:44  
标签:Employeeid Nature 无涯 Example emp Employee Clojure Learnfk EmployeeName

默认情况下,结构也是不可变的,因此,如果我们尝试更改特定键的值,则它不会更改。

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

相关文章

  • 无涯教程-Clojure - Accessing Individual Fields函数
    可以通过与结构对象一起访问键来访问结构的各个字段。AccessingIndividual-语法:keystructure-name参数   - "key"是结构中的键值,"structure-name"是作为相应关键字的结构。返回值 - 将返回与键关联的值。以下程序显示了有关如何使用它的示例。AccessingI......
  • 无涯教程-Clojure - struct-map函数
    通过显式定义将哪些值分配给结构中的哪些键,此函数用于将值专门分配给键值。struct-map-语法(struct-mapstructnamekeynvaluen….)参数   - "structname"是要赋予结构的名称,"keyn和valuen"是需要分配给该结构的键值。返回值 - 返回一个结构对象,其值映射......
  • 无涯教程-Clojure - defstruct函数
    该函数用于定义所需的结构。defstruct-语法(defstructstructnamekeys)参数   - "structname"是要赋予结构的名称,"keys"是需要作为结构一部分的键。返回值 - 返回结构对象。defstruct-示例以下程序显示了有关如何使用它的示例。(nsclojure.examples.......
  • 无涯教程-Clojure - vary-meta函数
    返回与原始对象具有相同类型和值的对象,但具有组合的元数据。vary-meta-语法(vary-metaobjnew-meta)参数   - 'obj'是要检查是否有任何元数据与之关联的对象,"new-meta"是需要与对象关联的元数据值。返回值 -返回与原始对象具有相同类型和值的对象,但具有组合......
  • 无涯教程-Clojure - meta-with函数
    此函数用于定义任何对象的元数据映射。meta-with-语法(with-metaobjmapentry)参数   - 'obj'是需要与元数据关联的对象,"mapentry"是需要与对象相关联的元数据。返回值 - 返回与obj具有相同类型和值的对象,并以mapentry作为其元数据。meta-with-示例(nscl......
  • 无涯教程-Clojure - meta函数
    此函数用于查看是否有任何元数据与对象相关联。meta-语法(metaobj)参数   - 'obj'是要检查是否有任何元数据与之关联的对象。返回值 - 返回obj的元数据,如果没有元数据,则返回nil。meta-示例(nsclojure.examples.example(:gen-class))(defnExample[......
  • 无涯教程-Clojure - not-any?函数
    如果集合中值的任何谓词在逻辑上为true,则返回false,否则返回true。not-any?-语法(not-any?p1col)参数   - 'p1'是需要测试的pattern。"col"是需要测试的值的集合。返回值 - 如果集合中值的任何断言在逻辑上为true,则返回false,否则返回true。not-any?-示例......
  • 无涯教程-Clojure - some函数
    返回值集合中x的some第一个逻辑真值。some-语法(somep1col)参数   - 'p1'是需要测试的断言, "col"是需要测试的值的集合。返回值 - 如果断言对于每个值都为true,则返回true,否则为false。some-示例(nsclojure.examples.example(:gen-class))(defnE......
  • 无涯教程-Clojure - every-pred函数
    接受一组断言,并返回一个函数"f",如果所有组成断言针对所有参数返回逻辑真值,则返回true,否则返回false。every-pred-语法(every-predp1p2..pn)参数  -  'p1p2...pn'是需要测试的所有断言的列表。every-pred-示例(nsclojure.examples.example(:gen-clas......
  • 无涯教程-Clojure - replace函数
    replacereplace函数用于用新的字符串值更换字符串中的子字符串replace-语法(replacestrpatreplacestr)参数   - “pat”是正则表达式模式,“str”是需要根据模式在其中找到文本的字符串,“replacestr”是需要根据模式在原始字符串中替换的字符串。replace-......