为什么(doc str)
但是(meta #'str)
?
在后一个中,为什么是#'
必要的,而不是第一个?
doc
是一个宏,它在内部应用于#'
传递var
的名称,因此您不需要将 var 本身传递给它。meta
是一个函数,因此它需要传递 var 本身,否则如果您仅使用 var 的名称,则 var 的值将被传递给它(doc
如
#'
是阅读器宏,#'str 扩展为 (var str),返回 Var 对象,参见 doc:
user> (doc meta)
-------------------------
clojure.core/meta
([obj])
Returns the metadata of obj, returns nil if there is no metadata.