Clojure - Agentes
Como apontado várias vezes, Clojure é uma linguagem de programação em que muitos dos tipos de dados são imutáveis, o que significa que a única maneira de alterar o valor de uma variável é criar uma nova variável e atribuir o novo valor a ela. No entanto, Clojure fornece alguns elementos, que podem criar um estado mutável. Vimos que isso pode ser alcançado com o tipo de dados atom. A outra maneira de fazer isso é por meio de agentes.
Agentsfornecer mudança independente e assíncrona de locais individuais. Os agentes são vinculados a um único local de armazenamento por toda a vida e permitem que apenas a mutação desse local (para um novo estado) ocorra como resultado de uma ação. Ações são funções (com, opcionalmente, argumentos adicionais) que são aplicadas de forma assíncrona ao estado de um Agente e cujo valor de retorno se torna o novo estado do Agente.
As seguintes operações são possíveis em Clojure com relação aos Agentes.
Sr. Não. | Operações e descrição |
---|---|
1 | agente Um agente é criado usando o comando do agente. |
2 | enviar Esta função é usada para enviar um valor ao agente. |
3 | agentes de desligamento Esta função é usada para encerrar qualquer agente em execução. |
4 | despedida Existem casos em que um agente é atribuído a uma função que é de natureza bloqueadora. |
5 | aguardar Como há um atraso quando um valor de um agente é atualizado, Clojure forneceu uma função de 'espera por' que é usada para especificar o tempo em milissegundos para aguardar a atualização do agente. |
6 | aguardam Bloqueia o segmento atual (indefinidamente!) Até que todas as ações despachadas até agora, deste segmento ou agente, para o (s) agente (s) tenham ocorrido. Bloqueará em agentes com falha. |
7 | erro de agente Retorna a exceção lançada durante uma ação assíncrona do agente, se o agente falhar. Retorna nulo se o agente não falhar. |