在 CLJ-1894 中,我提出了一个补丁,将 clojure.walk/stringify-keys 修改为包括命名空间,如果关键词使用命名空间的话。然而,我对该更改的后向兼容性做出了错误的假设,但我仍然认为这种行为并不完全符合预期。
Alex Miller 在对 CLJ-1894 的评论中指出的一个有趣的事情是,stringify-keys 和 keywordize-keys 函数本质上相同,只是变换不同。我认为有一个函数可以进行深度变换 map 的键,并且可以使用用户提供的变换是一个好主意,这可以简化一些 Clojure 库。
提案
- 添加 clojure.walk/transform-keys 以遍历 map 并变换所有键
- 在 clojure.walk/stringify-keys 和 clojure.walk/keywordize-keys 中使用 transform-keys
补丁: clj1899-review1.patch
审核: Alex Miller