Szukaj…
Wprowadzenie
Atom w Clojure to zmienna, którą można zmieniać w całym programie (przestrzeni nazw). Ponieważ większość typów danych w Clojure jest niezmienna (lub niezmienna) - nie można zmienić wartości liczby bez jej ponownego zdefiniowania - atomy są niezbędne w programowaniu Clojure.
Zdefiniuj atom
Aby zdefiniować atom, użyj zwykłego def
, ale dodaj przed nim funkcję atom
, na przykład:
(def counter (atom 0))
Tworzy to atom
o wartości 0
. Atomy mogą być dowolnego typu:
(def foo (atom "Hello"))
(def bar (atom ["W" "o" "r" "l" "d"]))
Odczytaj wartość atomu
Aby odczytać wartość atomu, po prostu wpisz nazwę atomu, przed nim @
:
@counter ; => 0
Większy przykład:
(def number (atom 3))
(println (inc @number))
;; This should output 4
Zaktualizuj wartość atomu
Istnieją dwa polecenia zmiany atomu, swap!
i reset!
. swap!
otrzymuje polecenia i zmienia atom na podstawie jego aktualnego stanu. reset!
całkowicie zmienia wartość atomu, niezależnie od wartości pierwotnego atomu:
(swap! counter inc) ; => 1
(reset! counter 0) ; => 0
Ten przykład generuje pierwsze 10 potęg 2
wykorzystaniem atomów:
(def count (atom 0))
(while (< @atom 10)
(swap! atom inc)
(println (Math/pow 2 @atom)))