欢迎!请查看关于页面,了解更多关于这个网站如何运作的信息。
假设我有一个这样的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 - 为数据读取器-fn 读取的任何对象提供自定义打印函数,以便它具有相同的标签文本进行打印。可能需要提供 print-method 和 print-dup 多态方法实现(它按类键入)。
print-method
print-dup