【发布时间】:2012-08-22 03:39:56
【问题描述】:
为什么是(doc str) 而(meta #'str)?
在后一个中,为什么#' 是必需的,而第一个中没有?
【问题讨论】:
为什么是(doc str) 而(meta #'str)?
在后一个中,为什么#' 是必需的,而第一个中没有?
【问题讨论】:
doc 是一个宏,它在内部将#' 即var 应用于传递的名称,因此您不需要将var 本身传递给它。 meta 是一个函数,因此它需要传递 var 本身,否则如果您只使用 var 的名称(如 doc 中所做的那样),则 var 的值将被传递给它
【讨论】:
#'是reader宏,#'str展开为(var str),返回Var对象,见doc:
user> (doc meta)
-------------------------
clojure.core/meta
([obj])
Returns the metadata of obj, returns nil if there is no metadata.
【讨论】: