3

为什么(doc str)但是(meta #'str)

在后一个中,为什么是#'必要的,而不是第一个?

4

2 回答 2

5

doc是一个宏,它在内部应用于#'传递var的名称,因此您不需要将 var 本身传递给它。meta是一个函数,因此它需要传递 var 本身,否则如果您仅使用 var 的名称,则 var 的值将被传递给它(doc

于 2012-08-22T05:00:57.367 回答
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.
于 2012-08-22T04:21:08.260 回答