试剂原子

在 Clojure 和 ClojureScript 中,试剂原子与常规原子基本相同 - 它们本质上是可以改变的变量。这特别有用,因为 Clojure(Script) 的数据类型大多是不可变的 - 这意味着要更改变量的值,必须重新声明变量。

普通原子与 Reagent 不相容,因此 Reagent 有自己的原子。它们被声明为普通变量,除了包含值的附加函数:

(:require [reagent.core :as r])

(def num (r/atom 1))

你可以通过两种方式获取原子的值:

(deref num) ; => 1
@num        ; => 1

要更改 atom 的值,有两个命令 swap!reset!

  • swap! 被赋予命令,根据原子本身的原始值改变原子的值
  • reset! 被赋予一个值,并将原子的值更改为给定的值,而不管原子原来是什么
(swap! num inc) ; => (inc num) => num = 2
(reset! num 5)  ; => num = 5