gpt4 book ai didi

clojure - 如何在 Clojure 中更新引用映射中的记录?

转载 作者:行者123 更新时间:2023-12-02 21:58:40 25 4
gpt4 key购买 nike

假设以下场景:

(defrecord Person [firstname lastname])
(def some-map (ref {}))

(dosync
(alter some-map conj {1 (Person. "john" "doe")})
(alter some-map conj {2 (Person. "jane" "jameson")}))

要将“joe”的名字更改为“nick”,我执行以下操作:

(dosync
(alter some-map (fn [m]
(assoc m 1
(assoc (m 1) :firstname "nick")))))

在 Clojure 中执行此操作的惯用方法是什么?

最佳答案

不需要使用 update-in,对于这种情况,assoc-in 正是您想要的。

(dosync (alter some-map assoc-in [1 :firstname] "nick"))

关于clojure - 如何在 Clojure 中更新引用映射中的记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12007347/

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