:在clojure中全局重新加载工作吗?

时间:2011-04-19 14:06:40

标签: clojure

假设我在clojure程序中有两个源文件,我使用以下方法重新加载已更改的外部模块:在其中一个模块中重新加载。重新加载是仅发生在调用reload的模块范围内还是对所有模块都有效的重载?

2 个答案:

答案 0 :(得分:3)

如果重新加载clojure文件,则重新加载。这不受范围的限制 - 它只是加载和评估文件中的任何内容。

然后究竟发生了什么取决于文件中的内容。例如,重新加载(def)表单会覆盖该var的根绑定。另一个有趣的结果是删除文件中的var然后重新加载它将不会删除var。

要求和使用在加载时也有副作用,并且a:重新加载并不意味着重新评估引用同一文件的所有其他要求和使用语句。

答案 1 :(得分:1)

我猜测,通过使用:reload,你可以更新repl上的命名空间(在你当前的java运行时实例上)。因此,我的答案是:它是全局的(因为现在你的运行时实例有新代码)