2024 Clojure状态调查!中分享您的想法。

欢迎!请查看关于页面,了解更多关于这个网站如何运作的信息。

+1
语法和读取器

假设我有一个这样的edn文件

{:name :some-name
:some-key #my/data-reader-fn [1 2 3]}

现在假设我想要通过程序修改:name的内容。

如果读取edn文件,则会应用数据读取函数,因此如果我想将更改写回到edn文件中,:some-key的内容也会改变。

有没有这个问题的解决方案?

1 答案

+5

被选择
 
最佳答案

选项1 - 不要使用你的读取函数,或者安装一个替代方案。将default-data-reader-fn绑定到tagged-literal是一个有效的“中转”解决方案。有关更详细的说明,请参阅https://insideclojure.org/2018/06/21/tagged-literal/

选项 2 - 为数据读取器-fn 读取的任何对象提供自定义打印函数,以便它具有相同的标签文本进行打印。可能需要提供 print-methodprint-dup 多态方法实现(它按类键入)。

by
太棒了。edn/read 在其选项中接受:default 键,传递标签字面量给它运行良好!非常感谢!
...