- Clojure是一个基于JVM的动态语言,支持函数式编程。
- https://clojure.org/下载最新版本,获得一个jar文件如clojure-1.8.jar。
- 直接运行
java -jar clojure-1.8.jar开启REPL。 - 如果要运行clojure程序文件,如
hello.clj,直接运行java -jar clojure-1.8.jar hello.clj。或者在repl中加载,如下:(load-file "hello.clj") - 定义函数
(defn hello [name] (str "Hello, " name))- 输出#’user/hello
- defn定义了一个函数。
- hello是这个函数的名称。
- hello函数接受一个参数name。
- str是一个函数调用,把由任意参数组成的列表连接成一个字符串。
- defn,hello,name和str都是symbols,代表了它们各自涉及事物的名称。
- #’前缀表示这个函数是用一个Clojure变量来保存的。
- 调用函数
(hello "caowentao")输出”Hello, caowentao” - 特殊变量
- *1,*2,*3存储了最近三次求值的结果
- *e存储了最后一个异常
- pst函数获得详细的堆栈跟踪
- 共享状态
#{}是空集合的字面表示法(conj #{} "Stu")向集合中添加元素(atom #{})创建atom引用类型对集合保持跟踪(def visitors (atom #{}))命名一个atom类型的引用- 使用
deref或者@提取引用内部的值。
- 引入名字空间
(require 'examples.introduction),单引号表示对库名的引用。- 使用名字空间的内容
(take 10 examples.introduction/fibs) - 使用refer将名字空间的所有内容映射到当前名字空间
(refer 'examples.introduction),然后直接使用fibs - 也可以使用use将两个步骤合并为一
(use 'examples.introduction) :reload标记用来强制重新加载一个程序库(use :reload 'examples.introduction)
- 查找文档
(doc str)(find-doc "reduce")
- 查看函数源码
- 使用repl库的source函数查阅某个Clojure函数源码
(use 'clojure.repl)(source identity)
- 使用Java的反射API
(ancestors (class [1 2 3]))
Programming Clojure笔记之一——入门
最新推荐文章于 2026-06-16 20:43:57 发布
本文介绍Clojure语言的基础知识,包括如何安装和运行Clojure环境、定义和调用函数的方法、管理共享状态的方式以及如何引入和使用外部库等内容。

756

被折叠的 条评论
为什么被折叠?



