Pergunta

Portanto, traços de suporte de squeak/pharo e jornais têm mixins. Qual é a diferença? Características não têm instvars, mas os mixins têm?

Foi útil?

Solução

Para uma boa comparação e pelo raciocínio de por que as características são preferidas, você pode verificar o papel características (pdf).

Em essência, é o que Lukas Renggli disse:

Os membros dos traços são compostos em uma classe e não mudam sua hierarquia de herança. Os conflitos devem ser explicitamente resolvidos pelo usuário das características.

Mixins são linearizados na hierarquia de herança da classe alvo. Se houver membros conflitantes, a ordem em que foram declarados ditames que o membro é chamado. Isto é frágil Porque define implicitamente o comportamento da composição, e o autor da classe deve estar ciente de possíveis conflitos e como eles afetarão a classe resultante.

Como os mixins são linearizados, eles não sofrem com os notórios "Problema de diamante"De enxame múltipla. Então a natureza frágil em que eles são empilhados é outro problema, que eu vou dublar o"Problema de rubi", para acompanhar a preciosa metáfora da pedra. por algumas razões estranhas que têm a ver com alce, as pérolas não descrevem o problema e os rubis.

Outras dicas

As características são compostas usando uma regra de composição. Os conflitos precisam ser resolvidos manualmente, não pode acontecer que uma característica acidentalmente substitua outro método com o mesmo nome.

As misturas são compostas por ordem e, portanto, têm problemas de fragilidade semelhantes à herança múltipla.

No Newspeak, todas as aulas são mixins. Aqui estão alguns trechos da resposta de Gilad Bracha a uma pergunta semelhante em Fórum de discussão de jornais:

Os mixins não são uma característica do jornal em si. Ou seja, não projetamos o idioma dizendo: OK, agora adicionaremos mixins. Os mixins caem automaticamente a partir de nidificação de classe e semântica baseada em mensagens. Ou seja, se você tiver aulas virtuais, você tem mixins, a menos que realmente as proibi. ...

Traços tentam resolver o problema percebido de mixins.

  1. Há muito pouca experiência real indicando que esses problemas percebidos são reais.
  2. As características são restritas a serem apátridas. Isso simplifica os assuntos, mas não lida com todos os casos de interesse. De fato, agora existem trabalhos de pesquisa tentando adicionar estado às características.

As características são totalmente incluídas por um modelo mais geral, que eu desenvolvi há muitos anos na minha tese de doutorado (disponível no meu site, se você realmente quiser cavar fundo). ... Gostaria de examinar como podemos incorporar esses combinadores ao jornal. ...

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top