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

欢迎!请查看 关于 页面以了解更多关于该功能的信息。

+4
Clojure

在 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

4 个回答

0

评论者:szalansky

CLJ-1899 补丁

0

评论者:alexmiller

在此补丁中,{{transform-keys}} 应该以反向顺序作为参数使用 {{[m f]}} —— 对于任何类型为 collection -> collection 的函数,集合应该是第一个参数。

0
by

评论者:szalansky

CLJ-1899 补丁解决了 Alex miller 指出的问题。

0
by
参考:[https://clojure.atlassian.net/browse/CLJ-1899](https://clojure.atlassian.net/browse/CLJ-1899)(由 szalansky 提出)
...