Recherche…
Introduction
Un atome dans Clojure est une variable qui peut être modifiée tout au long de votre programme (espace de noms). Comme la plupart des types de données dans Clojure sont immuables (ou non modifiables) - vous ne pouvez pas modifier la valeur d'un nombre sans le redéfinir - les atomes sont essentiels dans la programmation de Clojure.
Définir un atome
Pour définir un atome, utilisez un def
ordinaire, mais ajoutez une fonction atom
avant, comme ceci:
(def counter (atom 0))
Cela crée un atom
de valeur 0
. Les atomes peuvent être de tout type:
(def foo (atom "Hello"))
(def bar (atom ["W" "o" "r" "l" "d"]))
Lire la valeur d'un atome
Pour lire la valeur d'un atome, il suffit de mettre le nom de l'atome avec un @
avant:
@counter ; => 0
Un plus grand exemple:
(def number (atom 3))
(println (inc @number))
;; This should output 4
Mettre à jour la valeur d'un atome
Il y a deux commandes pour changer un atome, swap!
et reset!
. swap!
est donné des commandes et modifie l'atome en fonction de son état actuel. reset!
change complètement la valeur de l'atome, quelle que soit la valeur de l'atome d'origine:
(swap! counter inc) ; => 1
(reset! counter 0) ; => 0
Cet exemple génère les 10 premières puissances de 2
utilisant des atomes:
(def count (atom 0))
(while (< @atom 10)
(swap! atom inc)
(println (Math/pow 2 @atom)))