Clojure,Codox:如何使用:doc元数据而不是docstring?

时间:2014-10-02 19:53:56

标签: clojure

我正在研究codox。我知道docstrings被解析和显示,但是我可以启用^{:doc "Description"}来解析吗?例如,这可行

(defn get-foo "Get the Foo" [] @foo) 

但不是这个

(defn get-foo ^{:doc "Get the Foo"} [] @foo) 

3 个答案:

答案 0 :(得分:7)

如记录here所述,defn将接受" attr"可以通过:doc关键字包含文档的地图。所以这会奏效。

user> (defn get-foo {:doc "Get the foo"} [foo] @foo)
#'user/get-foo
user> (meta get-foo)
{:doc "Get the foo"}

但是,您已使用^阅读器宏将第一个以下表单(地图)作为元数据添加到符号get-foo,而不是第二个表单,即参数向量。 defn和def宏不检查元数据的参数向量,因此忽略了明显的文档字符串。

user> ^{:doc "foo"} []
[]
user> (meta ^{:doc "foo"} [])
{:doc "foo"}

答案 1 :(得分:0)

那不是^:doc注释的去处。它位于函数名称之前,因为您尝试将元数据附加到作为函数名称的符号。这与codox无关,但是关于clojure元数据和文档是一般性的。

答案 2 :(得分:0)

取下插入符号。你想要的是在那个地方传递属性地图,而不是元数据。这应该有效:

(defn get-foo {:doc "Get the foo"} [foo] @foo)