試劑原子

在 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