Clojure - comutar

Commute também é usado para alterar o valor de um tipo de referência, assim como alter e ref-set. A única diferença é que ele também precisa ser colocado dentro de um bloco 'dosync'. No entanto, isso pode ser usado sempre que não houver necessidade de saber qual processo de chamada realmente alterou o valor do tipo de referência. Comute também usa uma função para alterar o valor da variável de referência.

Sintaxe

A seguir está a sintaxe.

(commute refname fun)

Parameters- 'refname' é o nome da variável que contém o valor de referência. 'fun' é a função que é usada para alterar o valor do tipo de referência.

Return Value - A referência e seu novo valor correspondente.

Exemplo

Um exemplo de como isso é usado é mostrado no programa a seguir.

(ns clojure.examples.example
   (:gen-class))
(defn Example []
   (def counter (ref 0))
   
   (defn change [counter]
      (dosync
         (commute counter inc)))
   (change counter)
   (println @counter)
   
   (change counter)
   (println @counter))
(Example)

Resultado

O programa acima produz a seguinte saída.

1
2