【发布时间】:2015-03-13 13:44:44
【问题描述】:
我试图在运行时从文件加载命名空间。对于这个命名空间,我希望有一个通用别名,这样我就可以使用一个统一的、限定的名称访问该命名空间中的函数,该名称独立于加载文件的实际命名空间。
示例(不工作):
;; bar_a.clj
(ns bar-a)
(defn hello-world [] "hello world a")
;; bar_b.clj
(ns bar-b)
(defn hello-world [] "hello world b")
;; foo.clj
(ns foo)
(defn init [ns-name]
(let [ns-symbol (symbol ns-name)]
(require `[ns-symbol :as bar])
(bar/hello-world))) ;; => No such var bar/hello world
;; during runtime when calling `init`!!!
我已经尝试了各种方法(load-file、load)并将require 移动到不同的地方。到目前为止没有运气。
我怎样才能做到这一点?
【问题讨论】:
-
顺便说一句,我认为您的意思是 bar_a.clj 和 bar_b.clj。
-
当然,修复它。谢谢
标签: clojure namespaces