Símbolos ou Classes de caso para envio de mensagens para Atores Scala?
-
06-07-2019 - |
Pergunta
Nos exemplos ator Scala eu vi onde uma mensagem sem parâmetros é enviado para um ator (como este ), case class
es (ou case object
s) foram criados e, em seguida, usado como mensagens. Símbolos funcionar tão bem e olhar um mais puro pouco e, depois de ler um livro sobre Erlang, parecer mais natural. Presumo que a igualdade símbolo iria trabalhar para atores remotos.
Para mensagens com aulas de caso parâmetros seria a escolha óbvia, por isso talvez a consistência entre tipos de mensagens é um problema?
Existem razões para ir para qualquer abordagem?
Solução
Eu não acho que Symbol
s são um substituto para o uso de classes case
. Na verdade, eu não sou inteiramente certo o que usar Symbol
é de todo, uma vez que não tem o poder de símbolos em outros idiomas (por exemplo, Ruby, Smalltalk) -. É apenas uma internado Cordas
Por exemplo, no exemplo leilão padrão, é difícil ver como você iria representar a complexidade de uma compra / venda utilizando símbolos sozinho.
Quanto case
objetos , eu também acredito que estes são preferíveis aos símbolos. Por exemplo, eles podem ser exemplos de trait
s etc, e, por conseguinte, fornecer a funcionalidade.
Outras dicas
A resposta curta é a verificação em tempo de compilação.
símbolos Mesmo pensamento pode ser usado como mensagens e eles são ainda mais sucinta do que objetos de caso (não é necessário defini-los), compilador não pode detectar os símbolos com erros ortográficos e você terá um tempo difícil descobrir por que os atores não estão recebendo mensagens específicas quando é suposto.
Se as classes de casos e / ou objetos são usados ??como mensagens, compilador irá lhe dizer se você está tentando enviar e / ou receber mensagens não-existentes antes do programa está ainda executado.