可重新加载的 Clojure REPL
Reloadable Clojure REPL
如何为代码可重新加载的 Clojure 创建 REPL?
我可以创建一个新项目,并启动 REPL 运行:
lein new app stack
cd stack
lein repl
(-main)
完成上述操作后您应该 "Hello, World!"。
我想留在 REPL 中,将代码更改为 println
"Howdy partner!",然后再次 (-main)
。自动重新加载或(甚至更好)简单的手动重新加载(例如使用像 (r)
这样的命令)将使环境完整。
看来我已经进入了正确的命名空间(除了用户命名空间之外的任何命名空间,您必须从中 (in-ns 'some-ns)
是正确的命名空间!)。唯一未解决的部分是代码重新加载 - 手动或自动。
碰巧我之前问过如何用 做到这一点。
对于手动重新加载,您可以使用引导答案中发布的相同技巧,即具有为您重新加载的功能:
(defn r [] (require 'stack.core :reload))
一旦上述函数成为 stack.core
命名空间的一部分,您就可以从 REPL 中调用它。非常简单 - 命名空间 stack.core
中有一个函数可以重新加载自身。
从编辑器中更改代码,使用 (r)
重新加载,然后再次 运行...
还有用于自动重新加载的 lein-autoreload 插件。
如何为代码可重新加载的 Clojure 创建 REPL?
我可以创建一个新项目,并启动 REPL 运行:
lein new app stack
cd stack
lein repl
(-main)
完成上述操作后您应该 "Hello, World!"。
我想留在 REPL 中,将代码更改为 println
"Howdy partner!",然后再次 (-main)
。自动重新加载或(甚至更好)简单的手动重新加载(例如使用像 (r)
这样的命令)将使环境完整。
看来我已经进入了正确的命名空间(除了用户命名空间之外的任何命名空间,您必须从中 (in-ns 'some-ns)
是正确的命名空间!)。唯一未解决的部分是代码重新加载 - 手动或自动。
碰巧我之前问过如何用
对于手动重新加载,您可以使用引导答案中发布的相同技巧,即具有为您重新加载的功能:
(defn r [] (require 'stack.core :reload))
一旦上述函数成为 stack.core
命名空间的一部分,您就可以从 REPL 中调用它。非常简单 - 命名空间 stack.core
中有一个函数可以重新加载自身。
从编辑器中更改代码,使用 (r)
重新加载,然后再次 运行...
还有用于自动重新加载的 lein-autoreload 插件。