Clojure - dosync
Esegue l'espressione (in un do implicito) in una transazione che comprende l'espressione e tutte le chiamate annidate. Avvia una transazione se nessuna è già in esecuzione su questo thread. Qualsiasi eccezione non rilevata interromperà la transazione e uscirà da dosync.
Sintassi
Di seguito è riportata la sintassi.
(dosync expression)
Parameters - 'espressione' è l'insieme di espressioni, che arriverà nel blocco dosync.
Return Value - Nessuno.
Esempio
Un esempio di come viene utilizzato è mostrato nel seguente programma.
(ns clojure.examples.example
(:gen-class))
(defn Example []
(def names (ref []))
(defn change [newname]
(dosync
(alter names conj newname)))
(change "John")
(change "Mark")
(println @names))
(Example)
Produzione
Il programma precedente produce il seguente output.
[John Mark]