什么时候应该使用交换或重置

时间:2016-11-28 12:49:56

标签: clojure

在Clojure函数中使用id.swap!有什么区别?我从clojure.core文档中看到它们用于更改原子的值,但我不确定何时使用reset!以及何时使用swap!

您使用reset!的情况以及使用swap!的哪种情况?

reset!

以上代码是使用[:input {:type "text" :value @time-color :on-change #(reset! time-color (-> % .-target .-value))}] 按钮

的示例
reset!

此按钮使用[:input.form-control {:type :text :name :ric :on-change #(swap! fields assoc :ric (-> % .-target .-value)) :value (:ric @fields)}]

swap!swap!是否可以互换?

由于

1 个答案:

答案 0 :(得分:25)

swap!使用函数来修改atom的值。当原子的当前值很重要时,您通常会使用swap!。例如,递增值取决于当前值,因此您将使用inc函数。

reset!只是将atom的值设置为某个新值。当您只想设置值而不关心当前值是什么时,通常会使用它。

(def x (atom 0))
(swap! x inc)   ; @x is now 1
(reset! x 100)  ; @x is now 100
(swap! x inc)   ; @x is now 101