Zub*_*air 57 clojure clojurescript
在Clojure和clojurescript中你可以拥有一个名为defn-的defn的私有版本,但你如何对def做同样的事情,因为def-似乎不包括在内?
jua*_*rro 81
您必须添加:private true
元数据键值对.
(def ^{:private true} some-var :value)
;; or
(def ^:private some-var :value)
Run Code Online (Sandbox Code Playgroud)
第二种形式只是第一种形式的简写.
Tom*_*ilt 15
如果你想要一个def-,这是如何实现它
(defmacro def- [item value]
`(def ^{:private true} ~item ~value)
)
Run Code Online (Sandbox Code Playgroud)
实施方法def-
如下:
(defmacro def-
"same as def, yielding non-public def"
[name & decls]
(list* `def (with-meta name (assoc (meta name) :private true)) decls))
Run Code Online (Sandbox Code Playgroud)
这段代码与的代码非常相似defn-
,您可以使用进行查找(clojure.repl/source defn-)
:
(defmacro defn-
"same as defn, yielding non-public def"
{:added "1.0"}
[name & decls]
(list* `defn (with-meta name (assoc (meta name) :private true)) decls))
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
11823 次 |
最近记录: |