Sök…
Introduktion
En atom i Clojure är en variabel som kan ändras genom ditt program (namnutrymme). Eftersom de flesta datatyper i Clojure är oföränderliga (eller oföränderliga) - du kan inte ändra ett tals värde utan att omdefiniera det - är atomer viktiga i Clojure-programmering.
Definiera en atom
För att definiera en atom använder du en vanlig def , men lägger till en atom innan den, som så:
(def counter (atom 0))
Detta skapar en atom med värdet 0 . Atomer kan vara av alla slag:
(def foo (atom "Hello"))
(def bar (atom ["W" "o" "r" "l" "d"]))
Läs en atoms värde
För att läsa en atoms värde, sätt helt enkelt namnet på atomen, med en @ före den:
@counter ; => 0
Ett större exempel:
(def number (atom 3))
(println (inc @number))
;; This should output 4
Uppdatera en atoms värde
Det finns två kommandon för att ändra en atom, swap! och reset! . swap! ges kommandon och ändrar atomen baserat på dess nuvarande tillstånd. reset! ändrar atomens värde fullständigt, oavsett vad den ursprungliga atomens värde var:
(swap! counter inc) ; => 1
(reset! counter 0) ; => 0
Detta exempel matar ut de första 10 krafterna för 2 hjälp av atomer:
(def count (atom 0))
(while (< @atom 10)
(swap! atom inc)
(println (Math/pow 2 @atom)))