Clojure - invia

Questa funzione viene utilizzata per inviare un valore all'agente.

Sintassi

Di seguito è riportata la sintassi.

(send agentname function value)

Parameters- "agentname" è l'agente a cui viene reindirizzata la funzione di invio. La "funzione" viene utilizzata per determinare in che modo verrà modificato il valore dell'agente. Nel nostro caso, useremo il simbolo di addizione + per aggiungere un valore al valore esistente dell'agente. "Valore" è il valore passato alla funzione, che a sua volta verrà utilizzato per aggiornare di conseguenza il valore dell'agente.

Return Value - Restituisce un oggetto agente con un nuovo valore.

Esempio

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

(ns clojure.examples.example
   (:gen-class))
(defn Example []
   (def counter (agent 0))
   (println @counter)
   
   (send counter + 100)
   (println "Incrementing Counter")
   (println @counter))
(Example)

Produzione

Il programma precedente produce il seguente output.

0
Incrementing Counter
0

Si prega di notare quanto segue sul programma di cui sopra.

  • Poiché la funzione di invio è una funzione asincrona, c'è un ritardo di tempo per l'aggiornamento del valore dell'agente. Questo è il motivo per cui abbiamo aggiunto un'istruzione extra "println" al programma. Questo per dare all'ambiente Clojure il tempo necessario per aggiornare il valore dell'agente di conseguenza.

  • In secondo luogo, quando si esegue il programma precedente, il programma non verrà terminato immediatamente. Questo perché l'ambiente Clojure non sa se è sicuro chiudere l'agente. Vedremo come chiudere gli agenti nella prossima descrizione della funzione.

clojure_agents