使用函数在Clojure中生成docstring

时间:2014-05-01 05:11:08

标签: clojure

我希望能够以编程方式为clojure中的某个函数编写文档字符串。

例如,我希望能够做到这样的事情:

(defn my-function
    (str "Here are some numbers " (range 10))
    []
    (println "This function does nothing right now."))

然而,当我尝试这样做时,我得到"参数decleration str应该是一个向量"。这在clojure中是不可能的,还是有一些偷偷摸摸的方式来做到这一点?以编程方式生成文档字符串的部分对我有用。

1 个答案:

答案 0 :(得分:7)

是的,这绝对有可能。你在这里遇到的事情是defn(或更确切地说,它扩展到的def特殊形式)如果第二个地方的参数是一个字符串,则将文档字符串附加到符号。

您可以通过自己设置:doc元数据来避免这种情况。

(defn ^{:doc (apply str "Here are some numbers " (range 10))} my-function
   []
   (println "This function does nothing right now."))

或者可能通过编写自己的宏 - 但我认为以上是最简单的方法。