我试图只获取Clojure中函数的docstring,但是我遇到了几个问题,因为我找到的所有函数实际上都打印函数签名+ docstring。
例如,(doc map)实际上会打印类似的内容。
clojure.core/map
( c1 c2 c3中校)
返回一个惰性序列,该序列由将f应用于.
我只对获得docstring感兴趣,而不是打印它,也没有它的命名空间或特性。我正在寻找的是类似于(get-doc function-name)的东西,它将返回一个字符串
“返回由将f应用于.的结果组成的惰性序列。”
这在Clojure中有可能吗?
发布于 2015-08-19 13:08:15
你可以这样做:
(:doc (meta #'map))map本身只是一个符号,也就是一个名字。此符号解析为var,由特殊形式的#'map访问。这个var的值是实际函数,函数的docstring作为元数据存储在var上。
因此,#'map为您提供变量(也可以使用(var map)完成),meta为您提供该变量的元数据,:doc提取文档字符串。
有关更多信息,请查看变量、元数据和特殊形式。
发布于 2017-04-17 11:59:20
基于bsvingen的答案,我们可以定义一个宏,它返回如下所示的docstring:
(defmacro docstring [symbol]
`(:doc (meta (var ~symbol))))如果我们特别希望它是一个函数,例如用于map,您可以将它写成
(defn docstring [symbol]
(:doc (meta (resolve symbol))))https://stackoverflow.com/questions/32091698
复制相似问题