【问题标题】:Reloadable Clojure REPL可重载的 Clojure REPL
【发布时间】:2016-02-27 02:26:55
【问题描述】:

如何为 Clojure 创建可重新加载代码的 REPL?

我可以创建一个新项目,然后启动并运行 REPL:

lein new app stack 
cd stack
lein repl
(-main)

执行上述操作应该会得到“Hello, World!”。

我想留在 REPL,将代码更改为 println“你好,伙伴!”,然后再次更改为 (-main)。自动重新加载或(也许更好)简单的手动重新加载(例如使用(r) 之类的命令)将使环境完整。

似乎 lein 我已经进入了正确的命名空间(除了用户命名空间之外的任何命名空间,您必须从中 (in-ns 'some-ns) 是正确的命名空间!)。唯一未解决的部分是代码重新加载 - 手动或自动。

碰巧我之前问过如何使用boot 做到这一点。

【问题讨论】:

    标签: clojure read-eval-print-loop


    【解决方案1】:

    对于手动重新加载,您可以使用与启动答案中发布的相同的技巧,即拥有一个为您执行重新加载的功能:

    (defn r [] (require 'stack.core :reload)) 
    

    一旦上述函数成为 stack.core 命名空间的一部分,您就可以从 REPL 中调用它。非常简单 - 命名空间 stack.core 中有一个函数可以重新加载自身。

    从编辑器中更改代码,使用(r) 重新加载,然后再次运行...

    【讨论】:

      【解决方案2】:

      还有用于自动重新加载的lein-autoreload 插件。

      【讨论】:

        猜你喜欢
        • 2011-12-01
        • 2012-04-06
        • 2011-06-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-10-18
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多