将函数映射到Clojure中映射的值上

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (14)

我希望将一个值映射转换为另一个具有相同键的映射,但使用应用于这些值的函数。我认为在Clojure API中有一个函数可以这样做,但是我一直找不到它。

下面是我正在寻找的一个示例实现

(defn map-function-on-map-vals [m f]
  (reduce (fn [altered-map [k v]] (assoc altered-map k (f v))) {} m))
(println (map-function-on-map-vals {:a "test" :b "testing"} #(.toUpperCase %)))
{:b TESTING, :a TEST}

有没有人知道如果map-function-on-map-vals已经存在了?

提问于
用户回答回答于

reduce版本很好,这是一个使用列表理解的版本。

(defn foo [m f]
  (into {} (for [[k v] m] [k (f v)])))
用户回答回答于

user=> (use '[clojure.algo.generic.functor :only (fmap)])
nil
user=> (fmap inc {:a 1 :b 3 :c 5})
{:a 2, :b 4, :c 6}

扫码关注云+社区