- Covariance and contravariance (computer science)
- Many programming language type systems support subtyping. For instance, if the type Cat is a subtype of Animal, then an expression of type Cat should be substitutable wherever an expression of type Animal is used.
Ce contenu est quelque chose que vous rencontrerez naturellement si vous êtes développeur de compilateur, si vous utilisez l'API d'un compilateur ou si vous utilisez excessivement le système de types d'un compilateur.
Il s'agit d'un contenu que vous rencontrerez naturellement.
Il est naturellement intégré dans notre vie de codage.
Naturellement intégré à notre vie de codage.
Pour faire simple, si nous avons deux types, Animal et Dog,
Si un Dog est assigné à Animal, c'est de la covarianceet
inversementsi un Animal est assigné à Dog, c'est de la contravariance.
En général, on ne peut pas assigner Animal à Dog.
En effet, du point de vue des gens ordinaires, ce n'est pas approprié, et
c'est pourquoi les développeurs de compilateurs en sont conscients et n'intègrent la contravariance que dans certaines parties.
Habituellement, la contravariance est utilisée pour les valeurs d'entrée des fonctions, tandis que la covariance est maintenue pour les valeurs de sortie.
Vous vous demandez peut-être : Pourquoi avons-nous besoin de cette contravariance ?
Cela permet une plus grande flexibilité et un meilleur polymorphisme dans des domaines tels que la gestion des événements.
La covariance peut en fait causer des problèmes.
Dans le code ci-dessus, nous avons utilisé Animal à la place de Dog pour gagner en flexibilité et tenir compte du polymorphisme.
Si, au contraire, un sous-type de Dog comme Chiwawa était utilisé, une erreur se produirait lors de l'exécution du gestionnaire d'événements car Chiwawa possède des interfaces qui n'existent pas dans Dog.
En fait, comme nous utilisons le type Animal lors de l'exécution de la fonction, nous pouvons utiliser n'importe quel sous-type d'Animal, ce qui peut donner l'impression que Dog est assigné à Animal.
Comme vous pouvez le constater, la contravariance est principalement utilisée pour les valeurs d'entrée.
Invariance, invariance
Pour faire court, l'invariance permet à la fois la covariance et la contravariance, tandis que l'invariance ne permet ni l'une ni l'autre.
En conclusion
Ce sujet est simple ou complexe selon la manière dont on l'aborde, aussi
je vous recommande de lire ceci.
Commentaires0