У меня есть вектор и карта. И хочу, чтобы заменить элемент вектора, если это ключ карты (замените ключ со значением)заменить вектор, используя карту в clojure
user=> (def v [:a :b :c :d])
#'user/v
user=> (def m {:a :k, :c :q})
#'user/m
user=> (reduce (fn[x y] (conj x (if (y m) (y m) y))) [] v)
[:k :b :q :d]
Есть ли лучший способ сделать это?
Небольшой коррекция: '(получить Mxx)' равно '(if (содержит? mx) (mx) x)' (см. '(get {: x nil}: x: x)'). Кроме того, вы можете сократить функцию до '# (m%%)', так как карты реализуют 'IFn' и могут быть напрямую использованы для поиска. – xsc
Спасибо, я не знал, что хэш-карта как функция также имеет «не найденное» значение. – TheQuickBrownFox
Функция hash-map as не имеет значения по умолчанию. Функция 'get' делает. –