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(由andywmcveigh 报告)
...