文章目录

Clojure REPL:交互式开发

发布于 2026-04-02 01:16:00 · 浏览 15 次 · 评论 0 条

Clojure REPL:交互式开发

启动一个 Clojure REPL(Read-Eval-Print Loop),你就能立刻执行代码、查看结果、修改逻辑,而无需重新编译整个项目。这种“写一行、跑一行”的方式,让调试和探索变得极其高效。


准备工作:安装 Clojure 工具链

  1. 访问 https://clojure.org/guides/getting_started 下载官方推荐的 clj 工具。
  2. 打开终端(macOS/Linux 用 Terminal,Windows 用 PowerShell 或 WSL)。
  3. 运行 clj -h 验证安装是否成功。如果看到帮助信息,说明环境已就绪。

注意:不需要安装 Java SDK?Clojure 基于 JVM,但 clj 工具会自动管理兼容的 Java 运行时(通常是 Temurin JDK)。若提示缺少 Java,请按指引安装 OpenJDK 11 或更高版本。


启动基础 REPL

  1. 在终端中输入 clj 并回车。
  2. 等待几秒,你会看到类似以下提示符:
    Clojure 1.12.0
    user=>

    此时你已进入 REPL 环境,光标停在 user=> 后,等待输入。


执行第一行代码

  1. 输入 (println "Hello, REPL!") 并按回车。
  2. 观察输出:
    Hello, REPL!
    nil
    user=>

    第一行是你打印的内容,第二行 nilprintln 函数的返回值(Clojure 中所有表达式都有返回值)。

关键点:REPL 会 读取 你输入的表达式 → 求值(执行)→ 打印 结果 → 循环等待下一次输入。


定义并重用变量与函数

  1. 定义一个变量:
    (def x 42)

    REPL 返回 #'user/x,表示在 user 命名空间中创建了名为 x 的变量。

  2. 使用该变量:
    (+ x 8)

    输出 50

  3. 定义一个函数:
    (defn square [n] (* n n))
  4. 调用函数:
    (square 7)

    输出 49

  5. 修改函数逻辑(比如改为立方):
    (defn square [n] (* n n n))
  6. 再次调用
    (square 3)

    现在返回 27 —— 无需重启 REPL,新定义立即生效。


加载项目代码到 REPL

真实开发中,你通常有一个项目结构。假设项目根目录如下:

my-app/
├── deps.edn
└── src/
    └── my_app/
        └── core.clj

其中 deps.edn 内容为:

{:paths ["src"]}
  1. 在项目根目录下运行 clj 启动 REPL。
  2. 加载你的命名空间:
    (require 'my-app.core)
  3. 调用其中的函数(假设 core.clj 定义了 (defn greet [] "Hi")):
    (my-app.core/greet)

    输出 "Hi"

  4. 修改 core.clj 文件后,重新加载变更:
    (require 'my-app.core :reload)

提示:使用 :reload 参数会强制重新读取文件内容,使代码更新立即反映在 REPL 中。


使用快捷键提升效率

在 REPL 中,你可以使用标准的 readline 快捷键(Linux/macOS 终端通用):

功能 快捷键
上一条命令
下一条命令
移动到行首 Ctrl + A
移动到行尾 Ctrl + E
删除到行尾 Ctrl + K
删除到行首 Ctrl + U

处理错误与调试

  1. 故意输入错误代码,例如:
    (+ 1 "two")
  2. 阅读错误信息:
    Execution error (ClassCastException) at user/eval123 (NO_SOURCE_FILE:1).
    class java.lang.String cannot be cast to class java.lang.Number

    错误明确指出:不能把字符串 "two" 当作数字使用。

  3. 利用堆栈追踪定位问题。Clojure 错误会显示完整的调用路径,帮助你快速找到出错位置。
  4. 重新输入正确代码修正即可,无需退出 REPL。

连接编辑器实现无缝开发(以 VS Code 为例)

  1. 安装扩展 “Calva”(Clojure 开发专用插件)。
  2. 打开你的 Clojure 项目文件夹。
  3. 按下 Ctrl + Alt + C Ctrl + Alt + J(Windows/Linux)或 Cmd + Alt + C Cmd + Alt + J(macOS)。
  4. 选择 Start a Project REPL and Connect
  5. 等待Calva 自动启动 clj 并建立连接。
  6. 在任意 .clj 文件中选中代码,按下 Ctrl + Enter(或 Cmd + Enter直接发送到 REPL 执行

此时,编辑器与 REPL 深度集成:你可以在代码旁看到实时返回值,修改后一键重载,彻底告别“写-编译-运行”的繁琐循环。


退出 REPL

  1. 输入 (exit)(System/exit 0)
  2. 或者直接按 Ctrl + D(Unix 系统)或 Ctrl + Z 回车(Windows)。
user=> (exit)

评论 (0)

暂无评论,快来抢沙发吧!

扫一扫,手机查看

扫描上方二维码,在手机上查看本文