Skip to main content
 Web开发网 » 操作系统 » linux系统

Clojure编程快速入门

2021年10月14日6670百度已收录

● Java运行时。

● Leiningen。Leiningen是一个用于管理依赖项的工具,并且可以基于代码启动各种任务。

使用Leiningen来安装Clojure

使用Leiningen获取它们的依赖项:

Clojure编程快速入门  Clojure 第1张

依赖项将被下载到本地并放置在适当的位置。

Clojure编程快速入门  Clojure 第2张

Clojure编程快速入门  Clojure 第3张

使用REPL首先,在REPL提示符下键入(println "hello world")。

Clojure编程快速入门  Clojure 第4张

Clojure编程快速入门  Clojure 第5张

● defn定义了一个函数。

● hello是这个函数的名称。

● hello函数接受一个参数name。

● str是一个函数调用,把由任意参数组成的列表连接为一个字符串。

● defn、hello、name和str都是符号(symbols),代表了它们各自涉及事物的名称。

前缀#'表示这个函数是用一个 Clojure变量(var)来保存的,其中 user 是这个函数所在的命名空间(namespace)(就像 Java的默认包一样,user是REPL的默认命名空间)。

Clojure编程快速入门  Clojure 第6张

特殊变量使用 REPL 时,最近三次求值结果的描述被分别存储在特殊变量*1、*2和*3中。这使得进行迭代变的非常容易。

Clojure编程快速入门  Clojure 第7张

Clojure编程快速入门  Clojure 第8张

Clojure编程快速入门  Clojure 第9张

使用pst函数(print stacktrace)得到堆栈跟踪信息。

Clojure编程快速入门  Clojure 第10张

Clojure编程快速入门  Clojure 第11张

添加共享状态纯函数易于开发、测试,并易于理解,应该优先选择它们来处理任务。

可是,大多数程序拥有共享状态,并且需要使用非纯粹的函数来管理这些共享状态。

Clojure编程快速入门  Clojure 第12张

#{}是空集合的字面表示法。

Clojure编程快速入门  Clojure 第13张

conj是conjoin(连接)的缩写,它会新建一个含有新增项的集合。将元素连接到集合,就好像是创建了一个新的集合。

Clojure编程快速入门  Clojure 第14张

Clojure编程快速入门  Clojure 第15张

使用def来为原子命名。

Clojure编程快速入门  Clojure 第16张

def有点像defn,但更为通用。Def既能定义函数,又能定义数据。

Clojure编程快速入门  Clojure 第17张

要更新一个引用,需要使用诸如swap!这样的函数。

Clojure编程快速入门  Clojure 第18张

swap!会对拿引用r去调用update-fn,并根据需要传递其他可选的参数。

Clojure编程快速入门  Clojure 第19张

原子只是Clojure的几种引用类型之一。选择恰当的引用类型时,需要格外小心仔细。

可以在任何时候使用deref或者它的缩写@号来提取引用内部的值。

Clojure编程快速入门  Clojure 第20张

Clojure编程快速入门  Clojure 第21张

Clojure编程快速入门  Clojure 第22张

只要可能,就应该极力避免状态。

原子(和所有其他的Clojure引用类型)对于多个线程和多个处理器都是安全的。

获得这种安全性无需借助声名狼藉的锁定机制。

评论列表暂无评论
发表评论
微信