gpt4 book ai didi

clojure - 使用 Clojure 阅读器忽略未解析的符号

转载 作者:行者123 更新时间:2023-12-04 04:41:26 28 4
gpt4 key购买 nike

我有一个通过 prn 将 Clojure 映射记录到日志文件的应用程序.日志中人为的条目可能是:

{:foo "bar" 
:baz [:quux]
:body #<HttpInput org.eclipse.jetty.server.HttpInput@2a4bd173>}

我希望能够将其粘贴到 repl 中以检查“简单”键和值,但读者在 #< 上窒息值。
CompilerException java.lang.RuntimeException:
Unable to resolve symbol: HttpInput in this context

我不在乎 #<值。有没有办法让读者忽略它们,或者给我一个直接处理它们的机会(有点像 *data-readers* )?

最佳答案

据我所知,如果不手动编辑日志输出,就无法使此输入与阅读器一起使用。 prn 的默认行为对于无法识别的数据类型,输出以下形式的内容:
#<(.getSimpleName (class o)) (str o)>#字符表示一个读取器宏,它调度以下字符和 <字符表示不可读的形式;读者遇到这种情况时总会抛出异常。

您最好的选择可能是更改应用程序的日志记录,以打印更具可读性的内容。这样做的一种方法是提供 print-method 的实现。目标类的多方法,例如:

(defmethod print-method org.eclipse.jetty.server.HttpInput [o w]
(print-method {:type "HttpInput"
:request-uri (-> o ._connection .getRequest .getUri str)}
w))

(这可能不适用于 protected 字段 _connection ,但希望您能看到图片。)

关于clojure - 使用 Clojure 阅读器忽略未解析的符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18831405/

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