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

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

以上是关于什么时候应该使用交换或重置的主要内容,如果未能解决你的问题,请参考以下文章

华为交换机重置命令

如何从片段外部清除/重置地图?

发生配置更改时如何不重置我的片段?

滑块菜单片段中的可交换选项卡

一个函数应该返回什么可以失败?

切换片段时导航重置