Clojure: How to get a function docstring?
我试图仅在Clojure中获取函数的文档字符串,但是我遇到了几个问题,因为我发现的所有函数实际上都打印了函数签名+文档字符串。
因此,例如
clojure.core/map
([f coll] [f c1 c2] [f c1 c2 c3] [f c1 c2 c3 & colls])
Returns a lazy sequence consisting of the result of applying f to the ...
我只想让文档字符串不打印它,也不让它具有名称空间或Arity。 我正在寻找的是像
"Returns a lazy sequence consisting of the result of applying f to the ..."
Clojure有可能吗?
你可以这样做:
1 | (:doc (meta #'map)) |
因此,
有关更多信息,请查看var,元数据和特殊形式。
根据bsvingen的答案,我们可以定义一个返回文档字符串的宏,如下所示:
1 2 | (defmacro docstring [symbol] `(:doc (meta (var ~symbol)))) |
如果我们特别希望它是一个函数,例如 用于地图,您可以将其写为
1 2 | (defn docstring [symbol] (:doc (meta (resolve symbol)))) |