【发布时间】:2011-12-08 00:35:21
【问题描述】:
我在使用 group-by 时遇到问题。这是代码
(defn combine-by-coords
[values]
(let [grouped-by-x (group-by :x values)]
(persistent!
(reduce (fn [res x-val]
(assoc! res x-val (group-by :y (x-val grouped-by-x))))
(transient {})
(keys grouped-by-x)))))
地图的值的格式是
{:x 754, :y 56, :someKey "zxyf" ....} .
代码的目的是将具有相同 x 和 y 值的地图组合在一起。首先,我使用内置的 group-by 函数将 x 值组合在一起,结果是
{754 [{....}, {....}]}
之后,我将按 y 值对键 754 的数组进行分组。然而,这是我得到一个错误的地方。似乎无法使用密钥 754。这是我收到的错误:
java.lang.Integer cannot be cast to clojure.lang.IFn
我也尝试过 (keyword name) 函数来生成一个键,但这也不起作用。
有没有人知道这个问题的解决方案或者可能知道重写我的代码的方法?最后,我只需要将具有相同 x 和 y 的地图组合在一起。
【问题讨论】:
标签: clojure