Clojure - envoyer

Cette fonction est utilisée pour envoyer une valeur à l'agent.

Syntaxe

Voici la syntaxe.

(send agentname function value)

Parameters- 'agentname' est l'agent vers lequel la fonction d'envoi est redirigée. La «fonction» est utilisée pour déterminer de quelle manière la valeur de l'agent sera modifiée. Dans notre cas, nous utiliserons le symbole addition + pour ajouter une valeur à la valeur existante de l'agent. «Valeur» est la valeur transmise à la fonction, qui à son tour sera utilisée pour mettre à jour la valeur de l'agent en conséquence.

Return Value - Renvoie un objet agent avec une nouvelle valeur.

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 counter (agent 0))
   (println @counter)
   
   (send counter + 100)
   (println "Incrementing Counter")
   (println @counter))
(Example)

Production

Le programme ci-dessus produit la sortie suivante.

0
Incrementing Counter
0

Veuillez noter ce qui suit à propos du programme ci-dessus.

  • La fonction d'envoi étant une fonction asynchrone, il existe un délai pour la mise à jour de la valeur de l'agent. C'est pourquoi nous avons ajouté une instruction 'println' supplémentaire au programme. Cela permet de donner à l'environnement Clojure le temps nécessaire pour mettre à jour la valeur de l'agent en conséquence.

  • Deuxièmement, lorsque vous exécutez le programme ci-dessus, le programme ne se terminera pas immédiatement. Cela est dû au fait que l'environnement Clojure ne sait pas s'il est sûr d'arrêter l'agent. Nous verrons comment arrêter les agents dans la description de fonction suivante.

clojure_agents