使用swap!和reset!在Clojure函数之间有什么区别?我从clojure.core文档中看到它们用于改变原子的值,但我不确定何时使用swap!以及何时使用reset!.
你会在什么情况下使用swap!以及你会使用哪种情况reset!?
[:input {:type "text"
:value @time-color
:on-change #(reset! time-color (-> % .-target .-value))}]
Run Code Online (Sandbox Code Playgroud)
上面的代码是reset!用于按钮的示例
[:input.form-control
{:type :text
:name :ric
:on-change #(swap! fields assoc :ric (-> % .-target .-value))
:value (:ric @fields)}]
Run Code Online (Sandbox Code Playgroud)
而这个按钮使用 swap!
是swap!和reset!互换?
谢谢
Jos*_*osh 26
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
Run Code Online (Sandbox Code Playgroud)