假设我有一个包含ns的代码文件 - (ns abc.a)。现在我开始我的repl并在ns-(use-ns'abc.a)。
现在,如果我更改文件中的任何代码,如何在repl中重新加载ns?
谢谢, 穆尔塔扎
答案 0 :(得分:4)
您可以使用(require :reload 'abc.a)
或(require :reload-all 'abc.a)
热重新加载代码。后者还重新加载abc.a
所需的所有名称空间,而前者仅重新加载abc.a
。
答案 1 :(得分:2)
您可以使用load-file
重新加载文件。
答案 2 :(得分:1)
在REPL中设置命名空间时,不会从定义命名空间的文件中加载任何代码。您需要执行文件中的所有代码(最简单的方法是复制粘贴)。
因此,如果您的文件如下所示:
(ns abc.a)
(def x 3)
然后在REPL中执行user=>(ns abc.a)
后,您会收到提示abc.a=>
。您的命名空间已更改,但其中没有任何内容。键入x
以查看未定义。只有在执行abc.a=>(def x 3)
之后,才能将代码加载到REPL中的ns。
如果您随后更改了文件中的x
定义(比如(def x 5)
),只需在REPL中输入新的定义即可重新加载此代码。
如果您使用的是emacs,我建议您阅读this question。
答案 3 :(得分:1)
当使用emacs和slime时,你可以点击ctrl-c ctrl-l来重新加载当前命名空间并重新加载它包含的任何内容。