У меня проблема при использовании группировки.Вот код
(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 вместе,Сначала я группирую значения x вместе, используя встроенную функцию group-by, что приводит к
{754 [{....}, {....}]}
После этого я сгруппирую массив ключа 754 по их значению y.Однако здесь я получаю ошибку.Кажется, невозможно использовать ключ 754. Я получаю сообщение об ошибке:
java.lang.Integer cannot be cast to clojure.lang.IFn
Я также пробовал использовать функцию (имя ключевого слова), чтобы сделать из нее ключ, но этотоже не работает.
Кто-нибудь знает решение этой проблемы или, возможно, знает способ переписать мой код?В конце мне просто нужно, чтобы карты с одинаковыми x и y были сгруппированы вместе.