Clojure: преобразовать карту с ключевыми словами в карту с эквивалентными строковыми ключами - PullRequest
1 голос
/ 11 марта 2019

У меня есть карта типа {:a "A" :b "B"}, и я хочу преобразовать ее ключи в строки, например, {"a" "A" "b" "B"}.

У меня есть эта функция, которая работает:

(defn keyword-keys->strs [m]
  (zipmap
    (map name (keys m))
    (map second (vec m))))

Но есть ли более идиоматический или специально разработанный способ сделать это?

Спасибо!

1 Ответ

8 голосов
/ 11 марта 2019

Есть встроенная функция, которая будет рекурсивно преобразовывать ключи карты в строки:

(clojure.walk/stringify-keys {:a "A" :b "B"})
=> {"a" "A", "b" "B"}
(clojure.walk/stringify-keys {:a "A" :b {:c "C"}})
=> {"a" "A", "b" {"c" "C"}}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...