Clojure - enviar

Esta función se utiliza para enviar un valor al agente.

Sintaxis

A continuación se muestra la sintaxis.

(send agentname function value)

Parameters- 'agentname' es el agente al que se redirige la función de envío. La 'función' se usa para determinar de qué manera se cambiará el valor del agente. En nuestro caso, usaremos el símbolo de suma + para agregar un valor al valor existente del agente. 'Valor' es el valor pasado a la función, que a su vez se utilizará para actualizar el valor del agente en consecuencia.

Return Value - Devuelve un objeto de agente con un nuevo valor.

Ejemplo

En el siguiente programa se muestra un ejemplo de cómo se usa.

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

Salida

El programa anterior produce la siguiente salida.

0
Incrementing Counter
0

Tenga en cuenta lo siguiente sobre el programa anterior.

  • Dado que la función de envío es una función asíncrona, existe un retraso de tiempo para cuando se actualiza el valor del agente. Es por eso que hemos agregado una declaración 'println' adicional al programa. Esto es para darle al entorno de Clojure el tiempo necesario para actualizar el valor del agente en consecuencia.

  • En segundo lugar, cuando ejecuta el programa anterior, el programa no terminará inmediatamente. Esto se debe a que el entorno de Clojure no sabe si es seguro cerrar el agente. Veremos cómo cerrar agentes en la siguiente descripción de la función.

clojure_agents