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

欢迎!有关如何使用本站的更多信息,请参阅 关于 页面。

0
Clojure
函数 clojure.walk/keywordize-keys 和 stringify-keys 不尊重 Records。当它们被调用于一个数据结构时,该数据结构中的任何 Records 都将被转换为普通 maps。

例如:

user> (defrecord X [a])
user.X

user> (assoc (X. 1) "thing" 2)
#user.X{:a 1, "thing" 2}

user> (clojure.walk/keywordize-keys (assoc (X. 1) "thing" 2))
{:a 1, :thing 2}

user> (type (clojure.walk/keywordize-keys (assoc (X. 1) "thing" 2)))
clojure.lang.PersistentArrayMap

2 个回答

0

评论者:alexmiller

这个修补方案似乎对非 Records 有其他影响。例如,排序 map 会保留它们的排序,而这是当前没有的。这可能是或可能不是期望的行为,但这显然比这份工单暗示的行为变化要大得多。

stringify-keys 的更改甚至工作了吗?看起来没有,并且当应用时会导致测试失败。

0
参考:[https://clojure.atlassian.net/browse/CLJ-2505](https://clojure.atlassian.net/browse/CLJ-2505)(由 andrewmcveigh 报告)
...