2

假设我有一个包含 ns - (ns abc.a) 的代码文件。现在我开始我的 repl 并在 ns- (use-ns 'abc.a) 中。

现在,如果我更改文件中的任何代码,如何重新加载 repl 中的 ns?

谢谢,穆尔塔萨

4

4 回答 4

5

(require :reload 'abc.a)您可以使用或热重载代码(require :reload-all 'abc.a)。后者还重新加载所有必需的命名空间,abc.a而前者只重新加载abc.a

于 2012-07-03T08:40:42.503 回答
3

您可以使用load-file重新加载文件。

于 2012-07-03T08:39:19.400 回答
2

在 REPL 中设置命名空间时,不会从定义命名空间的文件中加载任何代码。您需要执行文件中的所有代码(最简单的方法是复制粘贴)。

因此,如果您的文件如下所示:

(ns abc.a)
(def x 3)

然后user=>(ns abc.a)在 REPL 中执行后,你会得到提示abc.a=>。您的名称空间已更改,但其中还没有任何内容。键入x以查看它未定义。只有在执行之后abc.a=>(def x 3),您才能将代码加载到 REPL 中的 ns 中。

如果您随后更改x了文件中的定义(例如更改为(def x 5)),只需在 REPL 中键入新定义即可重新加载此代码。

如果您使用的是 emacs,我建议您阅读这个问题

于 2012-07-03T08:16:15.497 回答
2

使用 emacs 和 slime 时,您可以按 ctrl-c ctrl-l重新加载 currend 命名空间并重新加载其中包含的任何内容。

于 2012-07-03T14:15:38.163 回答