gpt4 book ai didi

clojure - 映射 HashMap 中的每个值

转载 作者:行者123 更新时间:2023-12-04 01:33:50 24 4
gpt4 key购买 nike

我有一个哈希映射。我想迭代这些值并根据值的类型替换它们中的每一个。如果该值为整数,则将其替换为 true ,如果不是,则将其替换为 false .我希望它返回一个新的哈希映射,其中每个值都更新为 true 或 false。

(defn my-function [hash-map]
(loop [hash-map hash-map]
(for [value (vals hash-map)]
(if (= Integer (type value))
(recur (assoc hash-map key true))
(recur (assoc hash-map key false))))))

这是行不通的,因为 Clojure Can only recur from tail position ,但这就是我想做的事情的总体思路。任何有效的方法来做到这一点的想法? if-letupdate-in似乎是潜在的解决方案,但我无法完全掌握它们。

最佳答案

(reduce-kv (fn [m k v] (assoc m k (= Integer (type v)))) {} m)

如果您愿意,甚至更短:
(reduce-kv #(assoc %1 %2 (= Integer (type %3))) {} m)

并保持 map 的类型(哈希与排序):
(reduce-kv #(assoc %1 %2 (= Integer (type %3))) (empty m) m)

警告:最后一个不适用于记录。

关于clojure - 映射 HashMap 中的每个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14597245/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com