我创建了一个包含向量的原子:
(def name-seq (atom ["A" 1]))
在swap!
操作中,我需要增加向量的最后部分的数字。这是我正在尝试的内容:
(swap! name-seq #(["A" (inc (last @%))]))
我收到以下错误:ClassCastException clojure.lang.PersistentVector cannot be cast to java.util.concurrent.Future clojure.core/deref-future (core.clj:2108)
我在这里做错了什么?
答案 0 :(得分:1)
感谢@loki通过评论回答。 swap!
函数将deref-ed atom发送给交换函数。因此,我需要从我的解决方案中删除我使用@
进行的deref:
(swap! name-seq #(["A" (inc (last %))]))
。
答案 1 :(得分:1)
如果您的name-seq
是固定长度的向量,那么您可以使用update-in
function来执行此操作:
(swap! name-seq #(update-in % [1] inc))