很多时候,我们只想临时敲几行 Clojure 代码,体验一下 map、filter 的组合,或者看看神奇的线程宏 ->> 到底怎么传数据。如果为了这十几行代码,还要去装 Java、配环境、建项目,确实有点 “大动干戈”。
这时候,直接用咱们绿叶网的 Clojure 在线编译器就香多了。随开随写,写完就跑,特别适合刚接触 Clojure 的小伙伴边学边练,平时用来快速验证一段小逻辑也非常顺手。
页面上方就是咱们的 Clojure 在线编译器。基本操作很直观:左边写代码,右边看结果,修改之后可以继续运行。
我们来跑个小例子试试:使用向量保存几名同学的数据,接着通过 filter 筛选出 80 分以上的同学,再用 map 给他们每人加 5 分,最后遍历打印出来。
(def students
[{:name "小绿" :score 82}
{:name "小叶" :score 67}
{:name "小芽" :score 91}])
(def passed
(->> students
(filter #(>= (:score %) 80))
(map #(update % :score + 5))))
(doseq [student passed]
(println (:name student) "=>" (:score student)))运行结果如下。
小绿 => 87
小芽 => 96像这种简短的数据处理逻辑,最适合用在线编译器来跑。写完直接验证结果,省去了折腾本地环境的麻烦,让你把精力全都集中在代码本身上。
Clojure 在线编译器主打的是 “小代码、快验证”。因此,它主要适合以下几个场景:

当然,如果小伙伴们需要管理完整项目、安装第三方库、连接数据库,或者搞复杂的 Java 交互,那还是建议老老实实在本地搭个开发环境。在线编译器主打的就是一个 “轻量、快速、随写随测”。
简单来说,Clojure 是一门运行在 Java 虚拟机(JVM)上的函数式编程语言,属于经典的 Lisp 家族。

其中,它具有以下 3 个核心特点:
Clojure 并不是那种 “什么项目都要凑热闹” 的万金油语言,但在处理复杂数据、高并发以及需要 JVM 生态的场景下,它非常拿手:

简单来说,Clojure 就是 Lisp 家族的 “现代版”。
初见它时,小伙伴们会立刻感受到一股熟悉的 “括号味”:函数名在前,参数在后,外面用括号包起来。比如 1 加 2 会写成 (+ 1 2)。
但 Clojure 并不是照搬老旧的 Lisp 方言,它做了很多符合现代开发的改进。比如,它自带了非常顺手的数据结构,数组可以直接写成 [1 2 3],键值对(Map)可以写成 {:name "小绿" :score 90},这些在写业务代码时特别实用。
所以,我们可以把它看作一门 “继承了 Lisp 核心思想,但语法细节和生态都重新设计过” 的新语言。如果你在网上看到其他 Lisp(比如 Scheme)的代码,通常是不能直接复制到 Clojure 里运行的。

在很多传统语言里,我们习惯随时去修改一个变量的值。代码少的时候还好,一旦程序变大、线程变多,就很容易遇到经典悬案:“到底是谁偷偷改了这个值?”
Clojure 的做法很干脆:旧数据尽量不改。如果你需要修改,它会根据旧数据计算出一份全新的结果返回给你,而旧数据依然完好无损。
这样做最大的好处就是安心。数据在不同函数、不同线程之间传来传去时,你再也不用担心它被打乱,代码逻辑会变得非常好推理。当然,实际项目不可能毫无状态变化,所以 Clojure 也提供了 Atom 等专属工具来集中管理需要变化的部分。
它的核心理念不是 “死板地不准变”,而是 “让变化在明确、可控的范围内发生”。

小伙伴们可以把 Clojure 想象成住在 JVM(Java 虚拟机)这栋大楼里的 “另一位实力派住户”。
它不仅和 Java 共享底层的运行环境(比如垃圾回收机制),最香的一点是:它可以直接调用 Java 庞大的生态库。如果你需要用到某个功能(比如日期处理、第三方支付),直接拿现成的 Java 库来用就行,完全不需要重新造轮子。对于有 Java 基础的团队来说,这能省下大把时间。
不过要注意,“能调用 Java” 不代表 Clojure 是 “简写版的 Java”。两者的 “脑回路” 是截然不同的:Java 习惯面向对象和随时修改状态,而 Clojure 更偏爱函数式编程和不可变数据。虽然同住一个屋檐下,但写代码的思维方式并不是一回事。

代码写得多了以后,鼠标点来点去多少有点慢。Clojure 在线编译器支持下面这些常用快捷键,小伙伴们先把几个高频的记住就够用了。
Ctrl + Enter:运行代码。Ctrl + Z:撤销、Ctrl + Y:重做。Ctrl + C:复制、Ctrl + V:粘贴。Ctrl + A:全选。Ctrl + X:剪切。Ctrl + /:注释或取消注释。Ctrl + Home:跳转到首行的行首。Ctrl + End:跳转到末行的结尾。其中最值得记住的还是 Ctrl + Enter。写完一段 Clojure 代码顺手一按就能运行,用来反复练习集合处理、线程宏和函数组合非常方便。