【发布时间】:2016-07-03 15:41:17
【问题描述】:
我正在为吉他指法谱开发 clojure DSL,我希望通过在已知文件位置(例如 plugins.clj)中定义一个名为 apply-clojure-plugin 的函数来允许用户编写插件。
我试过了:
-
load文件并调用函数(导致“无法找到符号:apply-clojure-function”。 - 添加
declare以避免上述问题(导致“尝试调用未绑定的 fn”)
我猜这是某种命名空间问题,但我不知道如何在这里使用ns-resolve(如果有必要的话)。
编辑:我最终用resolve 解决了这个问题。问题是apply-clojure-plugin 没有在编译时定义(因为它是在文件中定义的),所以在编译过程中会抛出错误。调用(resolve 'apply-clojure-plugin) 工作正常。
【问题讨论】:
-
你不需要
ns-resolve。ns-resolve用于根据另一个 ns 的映射查找符号,为了您的目的,您所需要的只是映射到另一个 ns - 您不需要其他 ns 看到的东西,只需要它的东西定义。
标签: clojure