Clojure - Atomi confronta e imposta!

Atomicamente imposta il valore di atom al nuovo valore se e solo se il valore corrente dell'atomo è identico al vecchio valore detenuto dall'atomo. Restituisce vero se viene impostato, altrimenti restituisce falso.

Sintassi

Di seguito è riportata la sintassi.

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

Parameters- 'atom-name' è il nome dell'atomo il cui valore deve essere ripristinato. "oldvalue" è il vecchio valore corrente dell'atomo. "newvalue" è il nuovo valore che deve essere assegnato all'atomo.

Return Value - L'atomo con il nuovo valore verrà impostato solo se il vecchio valore è specificato correttamente.

Esempio

Un esempio di come viene utilizzato è mostrato nel seguente programma.

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

Produzione

Il programma precedente produrrà il seguente output.

1
1
3