gpt4 book ai didi

Clojure:(with-out-str(doc catch))返回 ""

转载 作者:行者123 更新时间:2023-12-02 11:13:38 24 4
gpt4 key购买 nike

我想知道这是为什么。finally& 也以这种方式表现。哪些其他 Clojure 符号具有此行为以及原因?

最佳答案

我相信您在 Clojure 的 doc 实现中偶然发现了一个错误,该错误影响 &catchfinally。在当前的 doc 实现中,这三个被特殊对待,并且关联的表达式似乎缺少语法引用。

以下是文档的 mod,它添加了语法引用,并且似乎按预期工作。该函数必须放置在 clojure.repl 命名空间中。

(defmacro doc2
[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))
(find-ns name) `(#'print-doc (#'namespace-doc (find-ns '~name)))
(resolve name) `(#'print-doc (meta (var ~name))))))

(doc catch) => { 打印 try doc 并返回 nil }

(doc2 catch) => { 打印 try doc 并返回 nil }

(with-out-str (doc catch)) => { 打印 try doc 并返回 "" }

(with-out-str (doc2 catch)) => "------------------------ --\ntry\n (try expr* catch-clause* finally-clause?)\n特殊形式\n catch-clause => (catch 类名 name expr*)\n finally-clause => (finally expr*)\n\n 捕获并处理 Java 异常。\n\n 请参阅 http://clojure.org/special_forms#try\n"

我将在 Clojure 错误跟踪器上追踪这个问题。

关于Clojure:(with-out-str(doc catch))返回 "",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21499507/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com