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

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

0
Clojure
已关闭

您如何看待在核心命名空间中添加 `index-by` 函数?它类似于 `group-by`,但不创建向量。

(defn index-by
  "Return a map where a key is (f item) and a value is item."
  {:added "1.11"
   :static true}
  [f coll]
  (persistent!
   (reduce
    (fn [ret x]
      (assoc! ret (f x) x))
    (transient {}) coll)))

我已经使用这个函数多年,特别是用于索引数据库结果。通常,您有一个包含唯一 ID 的地图向量,需要构建一个 `ID => 行` 的映射。为什么不引入这样的函数?我可以创建 PR。

作为重复内容关闭: 创建同质值索引映射
我认为这是一个 `group-by-reduce` ( https://cnuernber.github.io/ham-fisted/ham-fisted.api.html#var-group-by-reduce ) 的特殊情况,这可能与你感兴趣的内容有关。
关键点是,这个函数应该出现在核心模块中。我不喜欢当只需要4-5行代码时引入新的依赖的想法。
明白了!感谢你的澄清。
...