是否可以获取 clojure 接口或其他语法实体的文档字符串?
(defn documentedFun "documentedFun is documented" [] 123)
(assert (= (:doc (meta #'documentedFun)) "documentedFun"))
具有 doc 属性的接口在语法上似乎是正确的:
(definterface ^{:doc "Eq is an interface"} Eq (^{:tell bool} eq [b]) )
但是 REPL 无法解析应用于 Eq 的
doc
函数。
(doc Eq)
在 (/tmp/form-init4163264810453251954.clj:1:1) 处编译 var 时出现语法错误。 需要 var,但 Eq 映射到接口 hello_leiningen.core.Eq
不。元数据存在于 Clojure 变量上,而接口纯粹是 Java 功能。没有地方可以放置元数据。您可以定义一个协议:协议有一个 var,定义协议也定义了一个接口。