我正在使用 clojure.tools.reader/read 从文件中读取 clojure 和 cljs 表达式。
一切正常,但读取类似 ::keyword
的命名空间关键字时,它们被读取为 :user/keyword。
我知道读取器使用 ns 动态变量来确定读取符号和关键字时的当前命名空间,但我不知道如何使用它来读取一个不存在的命名空间,例如,从我现在正在读取的文件。
我尝试在读取之前先进行 (in-ns file-ns-symbol),
直接这样做不起作用,因为它将尝试调用 (the-ns file-ns-symbol) 来调用一个不存在的命名空间的函数。
(binding [*ns* file-ns-symbol]
(reader/read ...))
任何想法或指导吗?
谢谢!
读取器