欢迎!请访问关于页面,了解更多关于其工作方式的信息。
假设我有一个像这样的edn文件
{:name :some-name:some-key #my/data-reader-fn [1 2 3]}
现在假设我想程序化地更改:name的内容。
:name
如果读取edn文件,数据读取器函数会被应用,因此如果想将更改写入edn文件,那么也将更改:some-key。
:some-key
这个问题有没有解决方案?
选项1 - 不要使用您的读取器函数,或安装一个替代选项。将default-data-reader-fn绑定到tagged-literal是一个有效的"中继"解决方案。有关更多说明,请参阅https://insideclojure.org/2018/06/21/tagged-literal/。
default-data-reader-fn
tagged-literal
选项2 - 为数据读取器函数读取的任何对象提供一个自定义打印函数,以便它可以以相同的标记字面量打印。您可能需要提供print-method和print-dup多方法实现(它在类上键入)。
print-method
print-dup