Clojure 将 var 添加到命名空间

标签 clojure namespaces

如何将 var 添加到 clojure 命名空间,即以后可以通过调用 ns-interns 来检索它?

这是不是 (实习生 ns sym ...),因为实习生创建了一个 var 或重用了 var sym 绑定(bind)到的任何内容。当其他命名空间需要 ns 并在 ns 中保存对 vars 的引用时,这种区别很重要。我要求的是 ns-unmap 的反面。

最佳答案

你不能只用def ?:

def
Creates and interns or locates a global var with the name of symbol and a
namespace of the value of the current namespace (*ns*). 

并在代码中:
(def alpha)
(def beta :boo)
(intern 'tst.demo.core 'gamma :charlie)

(ns-interns 'tst.demo.core)
    => {alpha  #'tst.demo.core/alpha,  
        beta   #'tst.demo.core/beta
        gamma  #'tst.demo.core/gamma}

我不确定你在这里追求什么......?他们看起来都一样。

关于Clojure 将 var 添加到命名空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50162500/

相关文章:

clojure - 如何将 clojure 的 #inst 文字转换为等效的 java.time 类型?

ajax - cljs-ajax POST 给出 403

Clojure - 需要一个在 repl 中声明的命名空间

Python:在函数的本地命名空间中包含字典的条目

r - 有条件地修改父函数的行为

clojure - Clojure:当我重新输入函数定义时,为什么函数的元数据会发生变化?

json - Clojure Noir Json Put

clojure - 基座提前终止不起作用

visual-studio-2010 - Visual Studio 2010 添加项目引用然后编译器说找不到命名空间

c# - 如何根据字符串表示形式创建表示命名空间的树