在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!
是否可以互换?
由于
答案 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