私人def在clojure / clojurescript

在Clojure和clojurescript中,你可以拥有一个名为defn的defn的私有版本,但是你如何对def进行相同的处理,因为def似乎并不包含在内?

你必须添加:private true元数据键值对。

 (def ^{:private true} some-var :value) ;; or (def ^:private some-var :value) 

第二种forms仅仅是第一种。

如果你想要一个def,下面是如何实现它

 (defmacro def- [item value] `(def ^{:private true} ~item ~value) ) 

值得一提的是,目前在ClojureScript中不可能拥有私有的def (和defn ): https ://clojurescript.org/about/differences(在“特殊forms”下)

编译不会失败,但是def仍然可以访问。

这个谷歌小组post有关于这个话题的讨论。 显然这个请求已经被考虑过了。 根据其中一个答复, defn-被认为不是一个好主意,并决定不要用def和其他方式来维持它。