dificuldade para entender: estado em Clojure
-
12-09-2019 - |
Pergunta
Eu entendo o que: Estado / faz /. Ele cria um campo, como em Java, em sua classe. O que eu não entendo é o que é o ponto disso? Parece que eu só vê-lo feito com aulas Clojure-gerados que se estendem outras classes. http://www.fatvat.co.uk/2009/ 05 / clojure-e-robocode.html sendo um exemplo. Eu não sei Java, e eu não estou muito bem versado em Programação Orientada a Objetos. Alguém pode explicar o ponto de:? estado para mim, e onde tudo se encaixa com interoperabilidade Java
Muito obrigado!
NOTA: Quando eu digo: estado, eu estou me referindo (: gen-classe: Estado)
Solução 3
Eu falei sobre isso com hiredman no canal #Clojure IRC, e ele me disse que o ponto principal dele é um estado por instância. Isso faz sentido.
Outras dicas
: Estado é simplesmente uma maneira de compartilhar alguns dados entre as funções geradas como parte de gen-classe. Pense nisso como sendo exatamente o mesmo que os dados de instância de um objeto.
Mais infomation sobre a state
e como inicializar ele pode ser encontrado o artigo gen de classe - como ele funciona e como usá-lo
A partir do artigo:
-
:state
define um método que irá retornar o estado do objeto. -
:init
define o nome do initialiser. Esta é uma função que tem de devolver um vector. O primeiro elemento é novamente um vector de argumentos para o construtor da classe super. No nosso caso, este é apenas o vector vazio. O segundo elemento é o estado do objeto.
Em resumo, init
retorna o estado do objeto e é chamado quando o objeto é instanciado. state
é um método na classe, em oposição a uma função, que irá devolver o mesmo valor devolvido como o segundo elemento no vector retornado por init
.
O artigo, em seguida, passa a mostrar como usar um átomo de ser capaz de alterar o estado do objeto, se necessário.