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.