Clojure - enviar
Esta função é usada para enviar um valor ao agente.
Sintaxe
A seguir está a sintaxe.
(send agentname function value)
Parameters- 'nomedagente' é o agente para o qual a função de envio está sendo redirecionada. A 'função' é usada para determinar de que maneira o valor do agente será alterado. No nosso caso, usaremos o símbolo de adição + para adicionar um valor ao valor existente do agente. 'Valor' é o valor passado para a função, que por sua vez será usado para atualizar o valor do agente de acordo.
Return Value - Retorna um objeto de agente com um novo valor.
Exemplo
Um exemplo de como isso é usado é mostrado no programa a seguir.
(ns clojure.examples.example
(:gen-class))
(defn Example []
(def counter (agent 0))
(println @counter)
(send counter + 100)
(println "Incrementing Counter")
(println @counter))
(Example)
Resultado
O programa acima produz a seguinte saída.
0
Incrementing Counter
0
Observe o seguinte sobre o programa acima.
Como a função de envio é uma função assíncrona, há um atraso de tempo para quando o valor do agente é atualizado. É por isso que adicionamos uma instrução extra 'println' ao programa. Isso é para dar ao ambiente Clojure o tempo necessário para atualizar o valor do agente de acordo.
Em segundo lugar, quando você executa o programa acima, o programa não será encerrado imediatamente. Isso ocorre porque o ambiente Clojure não sabe se é seguro desligar o agente. Veremos como desligar agentes na próxima descrição da função.