试剂原子
在 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