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