gpt4 book ai didi

clojure - 与 pred 分离

转载 作者:行者123 更新时间:2023-12-04 05:05:00 26 4
gpt4 key购买 nike

(dissoc :a m)允许我解除给定的键。但是,有没有办法使用谓词函数来分离 pred 为真的任何键? (dissoc-with-pred pred? m)
所以给了一张 map - {:a 2 :b 3 :c 1 :d 4} (dissoc-with-pred (fn [[kv]] (> v 2) m)将返回 {:a 2 :c 1}

最佳答案

版本 1

(defn dissoc-with-pred [f m]
(reduce-kv (fn [res k v]
(if (f k v)
(assoc res k v)
res))
{} m))

编辑。

版本 2(由 Chouser 建议)
(defn dissoc-with-pred [f m]
(reduce-kv (fn [m k v]
(if (f k v)
m
(dissoc m k)))
m m))

版本 3
(defn dissoc-with-pred [f m]
(into {} (filter (fn [[k v]] (f k v)) m)))

测试
(dissoc-with-pred (fn [k v] (> v 2)) {:a 2 :b 3 :c 1 :d 4})
=> {:b 3, :d 4}

关于clojure - 与 pred 分离,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15629622/

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