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)))


Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow