【发布时间】:2011-06-11 13:18:11
【问题描述】:
我以为use 会这样做,但似乎在当前命名空间中创建的映射不是公开的。这是我想要实现的示例:
(ns my-ns
(:use [another-ns :only (another-fct)]))
(defn my-fct
[]
(another-fct 123)) ; this works fine
然后我有另一个这样的命名空间:
(ns my-ns-2
(:require [my-ns :as my]))
(defn my-fct-2
[]
(my/another-fct 456)) ; this doesn't work
我想这样做是因为another-ns 是一个用于访问数据库的库。我想将对该库的所有调用隔离在单个命名空间 (my-ns) 中,这样所有依赖于数据库的函数都将隔离在单个命名空间中,并且如果需要切换到另一个数据库变得更容易。
这个库的一些功能对我来说很好,但我想增加其他功能。假设读取功能很好,但我想通过一些验证来增加写入功能。
到目前为止,我看到的唯一方法是将所有映射手动编码为 my-ns,即使对于我不扩充的功能也是如此。
【问题讨论】:
标签: namespaces clojure