小编Sum*_*tch的帖子

Clojure:idiomatic更新地图的值如果密钥存在

这是我的问题:我想要一个helpme带有地图:r:g用空向量替换的函数,当且仅当这些键存在时.例如:


输入:

(helpme {:a "1" :r ["1" "2" "3"] :g ["4" "5"]})
Run Code Online (Sandbox Code Playgroud)

输出:

{:a "1" :r [] :g []}
Run Code Online (Sandbox Code Playgroud)

输入:

(helpme {:a "1" :r ["1" "2" "3"]})
Run Code Online (Sandbox Code Playgroud)

输出:

{:a "1" :r []}
Run Code Online (Sandbox Code Playgroud)

我可以定义一个功能"helpme"来做到这一点,但它过于复杂,我觉得必须有一个更容易(更惯用)的方式......

这是我完成的过于复杂的方式,如下所述:

(defn c [new-doc k] (if (contains? new-doc k) (assoc new-doc k []) new-doc))
(defn helpme [new-doc] (c (c new-doc :r) :g))
Run Code Online (Sandbox Code Playgroud)

dictionary key clojure

4
推荐指数
2
解决办法
2818
查看次数

标签 统计

clojure ×1

dictionary ×1

key ×1