2 votes

Scala annotation de type auto vs mix in "avec"

 

Possible Duplicate:
  Quelle est la différence entre les auto-types scala et les sous-classes de trait?

Je n'arrive pas à obtenir la différence entre les deux blocs de code suivants :

    // Le trait B est mélangé et crée une dépendance sur lui
    trait A extends C with B { 
       ...
    }

    // Le trait B est mis en portée et crée également une dépendance sur lui
    trait A extends C {
       self: B =>
    ...
    }

Je demande d'un point de vue de conception.

Merci!

4voto

Randall Schulz Points 18820

Lorsque vous utilisez le self-type, vous contraignez le trait à être utilisé uniquement lorsque le self-type spécifié est satisfait par les autres types avec lesquels il est mélangé. Vous n'obtenez pas de relation d'héritage entre le trait en cours de définition et le self-type déclaré. Une implication de ceci est que le trait lui-même, en tant que type statique isolé, n'est pas substituable publiquement pour le self-type. (On l'a comparé à l'héritage privé en C++, mais c'est une faible analogie).

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X