Question

soutien Squeak / Pharo et novlangue a traits Mixins. Quelle est la différence? Ont pas instVars traits mais Mixins ont?

Était-ce utile?

La solution

Pour une bonne comparaison et le raisonnement des raisons pour lesquelles les traits sont préférés, vous pouvez vérifier la traits papier (pdf) .

En substance, il est ce que Lukas Renggli dit:

membres sont composés de traits de caractère dans une classe, et ne changent pas sa hiérarchie d'héritage. Les conflits doivent être résolus explicitement par l'utilisateur des traits.

Mixins sont linéarisées dans la hiérarchie de l'héritage de la classe cible. S'il sont membres contradictoires, l'ordre dans lequel ils ont été déclarés diktats quel membre est appelé. Ceci est fragile , car il définit implicitement le comportement de la composition, et l'auteur de classe doit être conscient des conflits potentiels et comment ils vont avoir un impact la classe résultante.

Depuis mixins se linéarisé, ils ne souffrent pas de la tristement célèbre « problème de diamant » de l'héritage multiple. Ainsi, la fragilité dans laquelle ils sont empilés est un autre problème, que je vais repiquer le « problème de rubis », de garder la métaphore en pierre précieuse. Pour certaines raisons bizarres qui ont à voir avec orignal , les perles ne représentent pas le problème, ainsi que des rubis.

Autres conseils

caractères sont composés à l'aide d'une règle de composition. Les conflits doivent être résolus manuellement, il ne peut arriver qu'un trait remplace accidentellement une autre méthode du même nom.

Mixins sont composés par ordre et ont donc des problèmes de fragilité similaires à l'héritage multiple.

En novlangue toutes les classes sont mixins. Voici quelques extraits de la réponse de Gilad Bracha à une question similaire dans novlangue forum de discussion :

  

Mixins ne sont pas une caractéristique de novlangue   en soi. Autrement dit, nous ne concevons pas la   langue dit, ok, maintenant, nous allons ajouter   mixins. Mixins tombent automatiquement   de l'imbrication de classe et un message basé   sémantique. Autrement dit, si vous avez   des classes virtuelles, vous avez mixins   à moins que vous les interdire réellement. ...

     

tentent de répondre aux caractères perçus   problème de mixins.

     
      
  1. Il y a très peu d'expérience réelle indiquant que ces   les problèmes perçus sont réels.
  2.   
  3. sont limitées à caractères apatrides. Cela simplifie les choses,   mais ne gère pas tous les cas de   l'intérêt. En fait, il y a maintenant   documents de recherche qui tentent d'ajouter   état de traits.
  4.   
     

Les traits sont entièrement englobées par un plus   modèle général, que j'imaginé beaucoup   il y a des années dans ma thèse de doctorat (disponible   sur mon site web, si vous voulez vraiment   Creuser en profondeur).   ...   Je voudrais examiner comment nous pourrions   intégrer ces combinateurs dans   Novlangue. ...

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top