什么时候应该使用交换或重置
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了什么时候应该使用交换或重置相关的知识,希望对你有一定的参考价值。
在Clojure函数中使用swap!
和reset!
有什么区别?我从clojure.core文档中看到它们用于改变原子的值,但我不确定何时使用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!
和reset!
可以互换吗?
谢谢
答案
swap!
使用函数来修改原子的值。当原子的当前值很重要时,你通常会使用swap!
。例如,递增值取决于当前值,因此您将使用inc
函数。
reset!
只是将原子的值设置为某个新值。当你只想设置值而不关心当前值是什么时,通常会使用它。
(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
以上是关于什么时候应该使用交换或重置的主要内容,如果未能解决你的问题,请参考以下文章