Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Clojure中显示文档_Clojure - Fatal编程技术网

如何在Clojure中显示文档

如何在Clojure中显示文档,clojure,Clojure,我做了以下工作: (defn ss [] "kjhhj") (doc ss) 但返回“零”。为什么会这样 更新: 如果我这样做: (defn tt "kjhhj" [] 1) (str (doc tt) ) 如图所示,我得到一个空字符串。。。“doc”输出是输出还是什么?docstring位于函数的参数之前。您定义了一个没有返回字符串的docstring的函数 user> (defn ss [] "kjhhj") #'user/ss user> (ss) "kjhhj" user

我做了以下工作:

(defn ss [] "kjhhj")
(doc ss)
但返回“零”。为什么会这样

更新: 如果我这样做:

(defn tt "kjhhj" [] 1)
(str (doc tt) )

如图所示,我得到一个空字符串。。。“doc”输出是输出还是什么?

docstring位于函数的参数之前。您定义了一个没有返回字符串的docstring的函数

user> (defn ss [] "kjhhj")
#'user/ss
user> (ss)
"kjhhj"
user> (doc ss)
-------------------------
user/ss
([])
  nil
nil

user> (defn tt "kjhhj" [])
#'user/tt
user> (tt)
nil
user> (doc tt)
-------------------------
user/tt
([])
  kjhhj
nil
user> 

doc没有返回任何东西,它只是打印到屏幕上。看看来源

Clojure 1.3.0-master-SNAPSHOT
user=> (source doc)
(defmacro doc
  "Prints documentation for a var or special form given its name"
  {:added "1.0"}
  [name]
    (if-let [special-name ('{& fn catch try finally try} name)]
      (#'print-doc (#'special-doc special-name))
      (cond
        (special-doc-map name) `(#'print-doc (#'special-doc '~name))
        (resolve name) `(#'print-doc (meta (var ~name)))
        (find-ns name) `(#'print-doc (namespace-doc (find-ns '~name))))))

在(doc)上调用(str)将始终返回nil。

要捕获打印到*out*的内容的输出,请使用

(with-out-str (doc f))

哎呀,我醒得太久了。谢谢:)试试(doc-doc)看看是否可以。但我有一种预感。