我创建了一个包含向量的原子:

(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)

我在这做错了什么?

===============>>#1 票数:1

感谢@loki通过评论回答。 swap! 函数将deref-ed原子发送到交换函数。 因此,我需要从我的解决方案中删除我使用@所做的deref:

(swap! name-seq #(["A" (inc (last %))]))

===============>>#2 票数:1

如果你的name-seq是一个固定长度的向量,那么你可以使用update-in函数来做到这一点:

(swap! name-seq #(update-in % [1] inc))

  ask by arnab translate from so

未解决问题?本站智能推荐: