假设我有一个包含 ns - (ns abc.a) 的代码文件。现在我开始我的 repl 并在 ns- (use-ns 'abc.a) 中。
现在,如果我更改文件中的任何代码,如何重新加载 repl 中的 ns?
谢谢,穆尔塔萨
(require :reload 'abc.a)
您可以使用或热重载代码(require :reload-all 'abc.a)
。后者还重新加载所有必需的命名空间,abc.a
而前者只重新加载abc.a
。
您可以使用load-file
重新加载文件。
在 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,我建议您阅读这个问题。
使用 emacs 和 slime 时,您可以按 ctrl-c ctrl-l重新加载 currend 命名空间并重新加载其中包含的任何内容。