私人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
和其他方式来维持它。