首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Clojure:如何获得函数docstring?

Clojure:如何获得函数docstring?
EN

Stack Overflow用户
提问于 2015-08-19 09:33:38
回答 2查看 2.7K关注 0票数 11

我试图只获取Clojure中函数的docstring,但是我遇到了几个问题,因为我找到的所有函数实际上都打印函数签名+ docstring。

例如,(doc map)实际上会打印类似的内容。

clojure.core/map

( c1 c2 c3中校)

返回一个惰性序列,该序列由将f应用于.

我只对获得docstring感兴趣,而不是打印它,也没有它的命名空间或特性。我正在寻找的是类似于(get-doc function-name)的东西,它将返回一个字符串

“返回由将f应用于.的结果组成的惰性序列。”

这在Clojure中有可能吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-08-19 13:08:15

你可以这样做:

代码语言:javascript
复制
(:doc (meta #'map))

map本身只是一个符号,也就是一个名字。此符号解析为var,由特殊形式的#'map访问。这个var的值是实际函数,函数的docstring作为元数据存储在var上。

因此,#'map为您提供变量(也可以使用(var map)完成),meta为您提供该变量的元数据,:doc提取文档字符串。

有关更多信息,请查看变量元数据特殊形式

票数 15
EN

Stack Overflow用户

发布于 2017-04-17 11:59:20

基于bsvingen的答案,我们可以定义一个宏,它返回如下所示的docstring:

代码语言:javascript
复制
(defmacro docstring [symbol]
  `(:doc (meta (var ~symbol))))

如果我们特别希望它是一个函数,例如用于map,您可以将它写成

代码语言:javascript
复制
(defn docstring [symbol]
   (:doc (meta (resolve symbol))))
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32091698

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档