Clojure - Atomes comparer et définir!

Définit atomiquement la valeur de l'atome sur la nouvelle valeur si et seulement si la valeur actuelle de l'atome est identique à l'ancienne valeur détenue par l'atome. Renvoie true si set se produit, sinon il retourne false.

Syntaxe

Voici la syntaxe.

(compare-and-set! atom-name oldvalue newvalue)

Parameters- 'nom-atom' est le nom de l'atome dont la valeur doit être réinitialisée. «oldvalue» est l'ancienne valeur actuelle de l'atome. 'newvalue' est la nouvelle valeur qui doit être assignée à l'atome.

Return Value - L'atome avec la nouvelle valeur ne sera défini que si l'ancienne valeur est spécifiée correctement.

Exemple

Un exemple sur la façon dont cela est utilisé est montré dans le programme suivant.

(ns clojure.examples.example
   (:gen-class))
(defn example []
   (def myatom (atom 1))
   (println @myatom)
   
   (compare-and-set! myatom 0 3)
   (println @myatom)
  
   (compare-and-set! myatom 1 3)
   (println @myatom))
(example)

Production

Le programme ci-dessus produira la sortie suivante.

1
1
3