You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取Clojure接口及其他语法实体的文档字符串?

如何获取Clojure接口或其他语法实体的文档字符串?

你可以给函数添加文档字符串并通过meta获取,但给接口添加:doc元数据后,调用(doc Eq)会报错,报错信息翻译为:

编译/tmp/form-init4163264810453251954.clj:1:1处的var时出现语法错误。
期望是var,但Eq被映射到接口hello_leiningen.core.Eq

函数的文档字符串示例

(defn documentedFun "documentedFun is documented" [] 123)
(assert (= (:doc (meta #'documentedFun)) "documentedFun"))

带文档元数据的接口定义

(definterface ^{:doc "Eq is an interface"} Eq (^{:tell bool} eq [b]) )

解决方法

  • Clojure的doc命令默认仅支持查询var的文档,而definterface创建的是Java接口,并非Clojure var,因此直接调用(doc Eq)会报错。
  • 要获取接口的文档字符串,直接读取接口的元数据即可:
    (:doc (meta #'Eq))
    
    执行后将返回定义时设置的:doc值"Eq is an interface"。
  • 对于接口中的方法,同样可以通过方法符号的元数据获取标注信息,比如:
    (:tell (meta #'Eq/eq))
    
    会返回bool。

内容的提问来源于stack exchange,提问作者Daniil Iaitskov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 16:53:10