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