首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Clojure中将函数映射到map的值上

在Clojure中将函数映射到map的值上
EN

Stack Overflow用户
提问于 2009-11-05 05:49:39
回答 9查看 52.5K关注 0票数 140

我希望将一个值映射转换为另一个映射,使用相同的键,但对值应用一个函数。我认为在clojure api中有一个函数可以做到这一点,但我一直找不到它。

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

代码语言:javascript
复制
(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是否已经存在吗?我认为它是这样的(可能还有一个更好听的名字)。

EN

Stack Overflow用户

发布于 2009-11-05 06:12:38

我是Clojure的n00b,所以可能会有更优雅的解决方案。这是我的:

代码语言:javascript
复制
(def example {:a 1 :b 2 :c 3 :d 4})
(def func #(* % %))

(prn example)

(defn remap [m f]
  (apply hash-map (mapcat #(list % (f (% m))) (keys m))))

(prn (remap example func))

anon函数从每个键和它的f‘’ed值生成一个小的2-list。Mapcat在map的键序列上运行此函数,并将整个工作连接到一个大列表中。"apply hash- map“从该序列创建一个新的映射。(% m)可能看起来有点奇怪,它是用于将键应用于map以查找关联值的惯用Clojure。

最强烈推荐的读物: The Clojure Cheat Sheet

票数 2
EN
查看全部 9 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1676891

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档