ClojureScript-无法迭代ns-unmap函数

时间:2019-07-18 23:22:29

标签: clojurescript

我无法在ClojureScript中工作,而在Clojure中工作则没问题。

(defn unmap [nspace & vars]
  (doseq [var vars] (ns-unmap nspace var)))

用法:

(unmap 'some.nspace 'vars 'to 'be 'removed)

您还可以使unmap成为宏,这样您就不必引用所有内容。它所做的全部工作就是遍历一系列符号,并从给定的名称空间中提取它们的绑定。

在ClojureScript中,宏格式或unmap函数均不起作用(在Clojure中,它们可以正常工作)。尝试定义上述功能时出现以下错误。

意外扩展错误(AssertionError)宏扩展cljs.core / ns-unmap。 断言失败:ns-unmap的参数必须用引号引起来

不确定这是否是错误。似乎ClojureScript正在寻找类型提示。如果有人知道如何使它工作,将不胜感激。

1 个答案:

答案 0 :(得分:0)

在ClojureScript中,array([35, 2, 3, 31]) 宏旨在供REPL使用,以在开发时同时操纵在名称空间实现中使用的运行时状态和编译器状态。

传递给for dup in dup_list: np.where(my_list==dup[0], dup[1], my_list) my_list array([1, 2, 3, 4]) 的符号必须在编译时知道,以便它在宏扩展时正确地操纵编译器状态。

可以通过定义一个扩展为包含每个所需ns-unmap调用的ns-unmap的宏来解决此问题。

这里是一个例子:

do
相关问题