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


Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow