如果我在其中加载带有(ns my-namespace)的文件,为什么不切换我当前的名称空间?

dan*_*dan 5 clojure

我有这样的文件

(ns boston.core)
Run Code Online (Sandbox Code Playgroud)

(load "boston/core")但是,如果我来自REPL,我*ns*不会改变boston但仍然存在user.为什么是这样?

mik*_*era 5

这是因为load只加载指定的文件(进入boston.core命名空间,如文件顶部所指定).它对REPL中的当前名称空间没有任何作用.

如果您还想在REPL中切换命名空间以使用刚刚加载的内容,您需要执行以下操作:

(load "boston/core")
(ns boston.core)
Run Code Online (Sandbox Code Playgroud)

请注意,"boston/core"有斜杠,因为它引用文件资源,而名称空间本身使用点作为分隔符.