Clojure具有declare
宏,可用于向前声明函数或变量。似乎功能与def
完全相同:(declare x)
和(def x)
都创建#<Unbound Unbound: #'user/x>
什么时候应该使用(declare x)
代替(def x)
?
最佳答案
declare
和def
都可以创建一个未绑定(bind)的var,但是使用declare
有3个优点:
(declare x y z)
{:declared true}
declare
这个词可以说是更清晰和惯用的(source declare)
:(defmacro declare
"defs the supplied var names with no bindings, useful for making forward declarations."
{:added "1.0"}
[& names] `(do ~@(map #(list 'def (vary-meta % assoc :declared true)) names)))
关于clojure - `def`与`declare`进行前向声明,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33855736/