Ricerca…
introduzione
Un atomo in Clojure è una variabile che può essere cambiata nel tuo programma (spazio dei nomi). Poiché la maggior parte dei tipi di dati in Clojure sono immutabili (o immutabili) - non è possibile modificare il valore di un numero senza ridefinirlo - gli atomi sono essenziali nella programmazione Clojure.
Definisci un atomo
Per definire un atomo, usa un def
ordinario, ma aggiungi una funzione atom
prima di esso, in questo modo:
(def counter (atom 0))
Questo crea un atom
di valore 0
. Gli atomi possono essere di qualsiasi tipo:
(def foo (atom "Hello"))
(def bar (atom ["W" "o" "r" "l" "d"]))
Leggi il valore di un atomo
Per leggere il valore di un atomo, basta mettere il nome dell'atomo, con un @
prima di esso:
@counter ; => 0
Un esempio più grande:
(def number (atom 3))
(println (inc @number))
;; This should output 4
Aggiorna il valore di un atomo
Ci sono due comandi per cambiare un atomo, swap!
e reset!
. swap!
viene dato comandi e cambia l'atomo in base al suo stato corrente. reset!
cambia completamente il valore dell'atomo, indipendentemente da quale fosse il valore dell'atomo originale:
(swap! counter inc) ; => 1
(reset! counter 0) ; => 0
Questo esempio emette le prime 10 potenze di 2
usando gli atomi:
(def count (atom 0))
(while (< @atom 10)
(swap! atom inc)
(println (Math/pow 2 @atom)))